动态输入值未在支持 bean 中更新
我创建了一个动态输入字段,该字段根据项目类型而变化。
<h:panelGrid columns="2" cellpadding="10">
<c:forEach items="#{tabVar.items}" var="itmVar">
<h:outputText value="#{itmVar.label}:" />
<c:if test="#{itmVar.isString}">
<p:inputText id="#{itmVar.id}" value="#{itmVar.value}" required="#{itmVar.isEditable}" disabled="#{itmVar.isEditable}" valueChangeListener="#{tabBean.processValueChange}" maxlength="100" size="75" immediate="true" onchange="form1.submit()"/>
</c:if>
<c:if test="#{itmVar.isDate}">
<p:calendar id="#{itmVar.id}" value="#{itmVar.value}" required="#{itmVar.isEditable}" disabled="#{itmVar.isEditable}" valueChangeListener="#{tabBean.processValueChange}" onSelectUpdate="form1.submit();"/>
</c:if>
<c:if test="#{itmVar.isDouble}">
<p:inputText id="#{itmVar.id}" value="#{itmVar.value}" required="#{itmVar.isEditable}" disabled="#{not itmVar.isEditable}" valueChangeListener="#{tabBean.processValueChange}" maxlength="100">
<f:validateDoubleRange minimum="#{itmVar.minDouble}" maximum="#{itmVar.maxDouble}" />
</p:inputText>
</c:if>
<c:if test="#{itmVar.isInteger}">
<p:inputText id="#{itmVar.id}" value="#{itmVar.value}" required="#{itmVar.isEditable}" disabled="#{not itmVar.isEditable}" valueChangeListener="#{tabBean.processValueChange}" maxlength="100">
<f:validateLongRange minimum="#{itmVar.minLong}" maximum="#{itmVar.maxLong}" />
</p:inputText>
</c:if>
</c:forEach>
</h:panelGrid>
一切都正确呈现,但是当我更改并提交输入值时,它不会在支持 bean 中更新。这是如何引起的以及如何解决?
I have created a dynamic input field which changes depending on the item type.
<h:panelGrid columns="2" cellpadding="10">
<c:forEach items="#{tabVar.items}" var="itmVar">
<h:outputText value="#{itmVar.label}:" />
<c:if test="#{itmVar.isString}">
<p:inputText id="#{itmVar.id}" value="#{itmVar.value}" required="#{itmVar.isEditable}" disabled="#{itmVar.isEditable}" valueChangeListener="#{tabBean.processValueChange}" maxlength="100" size="75" immediate="true" onchange="form1.submit()"/>
</c:if>
<c:if test="#{itmVar.isDate}">
<p:calendar id="#{itmVar.id}" value="#{itmVar.value}" required="#{itmVar.isEditable}" disabled="#{itmVar.isEditable}" valueChangeListener="#{tabBean.processValueChange}" onSelectUpdate="form1.submit();"/>
</c:if>
<c:if test="#{itmVar.isDouble}">
<p:inputText id="#{itmVar.id}" value="#{itmVar.value}" required="#{itmVar.isEditable}" disabled="#{not itmVar.isEditable}" valueChangeListener="#{tabBean.processValueChange}" maxlength="100">
<f:validateDoubleRange minimum="#{itmVar.minDouble}" maximum="#{itmVar.maxDouble}" />
</p:inputText>
</c:if>
<c:if test="#{itmVar.isInteger}">
<p:inputText id="#{itmVar.id}" value="#{itmVar.value}" required="#{itmVar.isEditable}" disabled="#{not itmVar.isEditable}" valueChangeListener="#{tabBean.processValueChange}" maxlength="100">
<f:validateLongRange minimum="#{itmVar.minLong}" maximum="#{itmVar.maxLong}" />
</p:inputText>
</c:if>
</c:forEach>
</h:panelGrid>
Everything renders correctly, but when I change and submit the input values, then it does not get updated in the backing bean. How is this caused and how can I solve it?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
#{tabBean.processValueChange}
可能不正确。不可能对所有值仅使用 1 个 valueChangeListener 方法。你可以在 ManagedBean 中发布你的完整代码吗?是在 @SessionScope 上吗? valueChangeListener 的正确方法可能是这样的:如果你想保存一个序列值,你必须创建一个序列方法:)祝你好运!
#{tabBean.processValueChange}
may not right. Its not possiable to use only 1 method for valueChangeListener for all value. Can u post your full code in ManagedBean ? is that on @SessionScope ? The right method for valueChangeListener may be like this:If you want to save a serial of value, u have to create a serial of method :) good luck!