【问题标题】:how can I relate two selectManyListbox?如何关联两个 selectManyListbox?
【发布时间】:2011-07-18 09:38:19
【问题描述】:

我正在使用 JSF2.0/primefaces,我有两个 selectManyListbox

   <h:selectManyListbox   value="#{ToolsJIRA.selectedProjects}"  size="3">
      <f:selectItems value="#{ToolsJIRA.getMyListProject()}" />

     </h:selectManyListbox>

      <h:selectManyListbox   value="#{TestAjax.selectedstatus}" size="3">
      <f:selectItems value="#{TestAjax.StepsByProject()}" />
     </h:selectManyListbox>

第二个 selectManyListbox 与第一个 selectManyListbox 相关(当用户从​​第一个选择选项时,第二个将被填充), 我该如何关联它们?

【问题讨论】:

标签: java jsf-2 primefaces


【解决方案1】:

使用&lt;f:ajax&gt;

<h:selectManyListbox value="#{bean.selectedProjects}" size="3">
    <f:selectItems value="#{bean.availableProjects}" />
    <f:ajax listener="#{bean.updateAvailableSteps}" render="steps" />
</h:selectManyListbox>

<h:selectManyListbox id="steps" value="#{bean.selectedSteps}" size="3">
    <f:selectItems value="#{bean.availableSteps}" />
</h:selectManyListbox>

类似的东西

public void updateAvailableSteps() {
    availableSteps = new ArrayList<Step>();

    for (Project selectedProject : selectedProjects) {
        availableSteps.addAll(selectedProject.getSteps());
    }

    // If you want to filter duplicates, add the following line as well:
    // availableSteps = new ArrayList<Step>(new LinkedHashSet<Step>(availableSteps));
}

在输入组件中,&lt;f:ajax&gt; 默认在每个 change 事件上触发。触发时,listener 属性中声明的 bean 方法将被调用,render 属性中定义的组件将被更新。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-02
    • 1970-01-01
    • 2023-03-26
    • 2016-03-31
    • 2014-02-14
    相关资源
    最近更新 更多