我正在努力用JSF实现一个相当简单的功能,它涉及在页面上动态显示嵌套地图的内容并编辑其值的功能.但事实证明,MappedValueExpression$Entry
在迭代地图时得到的c:forEach
是不可写的!
<c:forEach items='#{inflectionBean.word.inflectionalForms}' var="number" >
<p:fieldset legend="#{number.key}">
<c:forEach items="#{number.value}" var="case" >
<p:panel header="#{case.key}">
<h:inputText value="#{case.value}" />
</p:panel>
</c:forEach>
</p:fieldset>
</c:forEach>
Run Code Online (Sandbox Code Playgroud)
当我试图提交上述表格时,我得到:
javax.el.PropertyNotWritableException:/inflection.xhtml @ 39,56 value ="#{case.value}":类'com.sun.faces.facelets.tag.jstl.core.MappedValueExpression $ Entry'没有可写财产'价值'.
我想知道是否有合理的解决方法,或者我是否以错误的方式处理问题.谢谢!
基本上,您的代码正在尝试调用Map.Entry#setValue(value)
.这在EL中确实是不可能的.相反,您应该通过键直接在地图上引用地图值,以便EL可以这样做Map#put(key, value)
.
<c:forEach items="#{number.value}" var="case">
...
<h:inputText value="#{number.value[case.key]}" />
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5914 次 |
最近记录: |