【问题标题】:How to bind selected values of <a4j:repeat><rich:select> to the model?如何将 <a4j:repeat><rich:select> 的选定值绑定到模型?
【发布时间】:2014-08-19 19:26:51
【问题描述】:

我有以下表格:

<h:form>
    <a4j:repeat var="drillDownSet" value="#{drilldownRequest.itemDetailMap.entrySet().toArray()}">
        <rich:select>
            <f:selectItems value="#{drillDownSet.value}" var="val"
                itemValue="#{drillDownSet.key}" itemLabel="#{val}" />
        </rich:select>
    </a4j:repeat>
    <h:commandButton value="Summit" action="#{drilldownRequest.itemSpecSummit}" />
</h:form>

还有下面的backing bean:

@Named
@RequestScoped
public class DrillDownRequest {

    Map<String, ArrayList> itemDetailMap;

    public void itemSpecSummit() {
        // How can I retrieve all the selected values from the dropdown menus here?
    }

}

如何在操作方法中检索&lt;rich:select&gt; 的所有选定值?

【问题讨论】:

  • 你确定&lt;f:selectItems&gt; 是正确的吗?现在所有可用的选项都具有完全相同的值。

标签: jsf richfaces


【解决方案1】:

首先,你的&lt;f:selectItems itemValue&gt; 坏了。所有选项相同。这是不对的。如果ArrayList实际上List&lt;String&gt;,就应该这样做:

<f:selectItems value="#{drillDownSet.value}" />

另见:


回到具体问题,继续进行上述修复,您只需使用 #{drillDownSet.key} 作为映射键并将 &lt;f:selectItems itemValue&gt; 作为映射值将 &lt;rich:select value&gt; 绑定到另一个 Map&lt;String, String&gt;

private Map<String, String> selectedItems = new HashMap<>(); // +getter (setter not necessary)
<a4j:repeat var="drillDownSet" value="#{drilldownRequest.itemDetailMap.entrySet().toArray()}">
    <rich:select value="#{drilldownRequest.selectedItems[drillDownSet.key]}">
        <f:selectItems value="#{drillDownSet.value}" />
    </rich:select>
</a4j:repeat>

【讨论】:

  • 感谢您指出我的错误。我按要求做了一些更改。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-19
  • 2023-03-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多