gpt4 book ai didi

jsf - 如何在 h :inputText 中设置 Map 值

转载 作者:行者123 更新时间:2023-12-02 06:19:28 25 4
gpt4 key购买 nike

我正在努力使用 JSF 实现一个相当简单的功能,其中涉及在页面上动态显示嵌套 map 的内容及其值的编辑功能。但事实证明,使用 c:forEach 迭代映射时得到的 MappedValueExpression$Entry 不可写!

<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>

当我尝试提交上述表单时,我得到:

javax.el.PropertyNotWritableException: /inflection.xhtml @39,56 value="#{case.value}": The class 'com.sun.faces.facelets.tag.jstl.core.MappedValueExpression$Entry' does not have a writable property 'value'.

我想知道是否有合理的解决方法,或者我是否以错误的方式处理问题。谢谢!

最佳答案

基本上,您的代码正在尝试调用 Map.Entry#setValue(value) 。这在EL中确实是不可能的。相反,您应该通过键直接在映射本身上引用映射值,以便 EL 可以执行 Map#put(key, value) .

<c:forEach items="#{number.value}" var="case">
...
<h:inputText value="#{number.value[case.key]}" />

关于jsf - 如何在 h :inputText 中设置 Map 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17977578/

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