【问题标题】:rich:pickList with Ajax updatesrich:pickList 与 Ajax 更新
【发布时间】:2011-09-15 14:53:27
【问题描述】:

我有一个 RichFaces pickList,用户应该能够从中选择多个项目,并且它应该直接反映在支持 bean 上。现在,如果出现验证错误或重新加载页面,我无法重新加载选择。有没有一种简单的方法可以告诉 RichFaces 我希望在每次更改时更新支持列表?

【问题讨论】:

    标签: richfaces ajax4jsf seam2


    【解决方案1】:

    您可以附加到onlistchange 事件。

    使用a4j:support

    <rich:pickList ...>
        <a4j:support event="onlistchange"/>
    </rich:pickList>
    

    或者,在较新的版本中,使用a4j:ajax

    <rich:pickList ...>
        <a4j:ajax event="change" render="result"/>
    </rich:pickList>
    

    或者使用a4j:jsFunction:

    <rich:pickList onlistchange="listChange();"... />
    <a4j:jsFunction name="listChange" />
    

    上述表单中的两种方法都将提交表单,从而导致提交选定的值。如果需要,您还可以为a4j:support/a4j:jsFunction 指定其他属性(例如ajaxSingle="true" 用于a4j:support 仅处理pickList 组件(其他输入将不会被验证/更新),action/actionListener 以列表更改时执行服务器端逻辑,reRender 等)。

    【讨论】:

    • 我的错,是选项列表中缺少的
      标记让 ajax 更新失效。但你的答案是最接近的,恭喜:D
    【解决方案2】:

    您是否尝试使用 ajaxRendered="true" 在面板中声明您的选择列表?这应该会自动重新渲染pickList

    <a4j:outputPanel ajaxRendered="true">
      <rich:pickList...
    </a4j:outputPanel>
    

    【讨论】:

      【解决方案3】:

      <h:form> <rich:pickList value="#{pickListBean.result}"> <f:selectItems value="#{capitalsBean.capitalsOptions}"/> <a4j:support event="onlistchanged" reRender="result"/> </rich:pickList> </h:form>

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-10-31
        • 1970-01-01
        • 2012-06-16
        • 1970-01-01
        • 2011-12-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多