gpt4 book ai didi

java - JSF selectOneMenu 将 null 设置为 map[key]

转载 作者:行者123 更新时间:2023-12-01 14:22:49 25 4
gpt4 key购买 nike

我想从 map 获取/设置 selectOneMenu 值,因此,我使用下一个代码 xhtml:

<h:panelGroup id="productFilters">
<ui:repeat id="repeatSelectOneMenu"
value="#{filterBean.productKeys}"
var="key">
<h:selectOneMenu id="productFiltersSelector"
value="#{filterBean.tmp[key]}"
onchange="executeProductSelector();">
<f:selectItem value="#{null}" itemLabel="#{commonBundle.all}"/>
<f:selectItems value="#{filterBean.productLists[key]}"/>
</h:selectOneMenu>
</ui:repeat>

<a4j:jsFunction name="executeProductSelector"
render="productFilters"
limitRender="true"
execute="productFilters"/>
</h:panelGroup>

bean :

public Map<Integer, String> getTmp() {
return tmp;
}
public void setTmp(Map<Integer, String> tmp) {
this.tmp = tmp;
}

public Map<Integer, List<String>> getProductLists() {
return productLists;
}
public void setProductLists(Map<Integer, List<String>> productLists) {
this.productLists = productLists;
}

public List<Integer> getProductKeys() {
return new ArrayList<>(getProductLists().keySet());
}

但是,当我执行然后重新渲染它时,值更改为之前的值。详细信息:假设productKeys 只有键0,并且productLists[0] 包含多个字符串(“apple”、“orange”、“banana”)。当前我们选择“橙色”,然后我们尝试选择“全部”。重新渲染后,我再次看到“橙色”,并且 tmp[0] 也包含“橙色”。如果我把它改成“apple”,一切都会好起来的。我的问题:如何将 tmp[key] 设置为 null?

最佳答案

您不能将 null 值分配给 SelectItem。如果您从 backingbean 分配它,则会引发渲染问题。但你可以通过

<h:selectOneMenu id="productFiltersSelector"
value="#{filterBean.tmp[key]}"
onchange="executeProductSelector();">
<f:selectItem value="-1" itemLabel="#{commonBundle.all}"/>
<f:selectItems value="#{filterBean.productLists[key]}"/>
</h:selectOneMenu>

因此,每当您选择“全部”选项时,它都会返回 -1。

关于java - JSF selectOneMenu 将 null 设置为 map[key],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17404904/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com