【发布时间】:2017-05-03 15:53:19
【问题描述】:
我有以下 JSF 构造:
<c:set var="myVar" value="#{myBean.getMyMap()}" scope="request" />
<h:form>
<p>
<h:outputText value="Output1: " />
<h:selectOneMenu value="#{myMappingsBean.data.attribute1}" binding="#{input1}" required="true">
<f:selectItems var="entry" value="#{myVar}"/>
<p:ajax update="myDropdown"/>
</h:selectOneMenu>
</p>
<p>
<h:outputText value="Output2: " />
<h:selectOneMenu id="myDropdown" value="#{myMappingsBean.data.attribute2}" binding="#{input2}" required="true" converter="javax.faces.Double">
<f:selectItems var="entry" value="#{myVar.get(input1.value)}"/>
</h:selectOneMenu>
</p>
</h:form>
myVar 后面是这样定义的映射:Map<String, Collection<Double>>
第一个下拉菜单显示该映射的所有键的列表(如所需),但其后面的值是值的集合。 这里是该下拉列表的一个选项的 HTML 输出:
<option value="[1.0, 2.0]">SomeString</option>
我的第二个下拉列表应该列出存储在键后面的映射中的双值集合,该集合由第一个菜单选择。
现在的问题是,当我使用value="#{myVar.get(input1.value)}" 时,我从.value 获得的值是集合而不是地图的字符串/键。所以我从来没有得到想要的结果。
如何获取绑定对象input1 后面的字符串/键?有类似input1.name 或.toString 的东西吗?某处有这方面的纪录片吗?
【问题讨论】:
-
请附上豆源。通过 EL 表达式中的属性(getter/setter 方法)访问 bean 字段:
... value="#{myBean.myMap}" -
bean 中没有属性 myMap。只有 getMyMap() 方法返回所述地图。它也不会被页面更改,所以我想不需要设置器。
.data的所有其他 setter 和 getter 只是设置或返回变量。我的问题在于对象input1。使用.value我得到了值,但我还需要希望也存储在那里的字符串。
标签: jsf