【发布时间】:2017-11-29 20:24:02
【问题描述】:
我被这个错误逼疯了:
我有以下字段
<p:selectOneMenu id="selectOption"
required="true"
requiredMessage="#{bundle.mandatory_field_message}"
rendered="#{myBean.previousOptionSelected eq 'Correct Option'}"
value="#{myBean.selectedOption}">
<c:if test="#{myBean.optionsList.size() ne 1}">
<f:selectItem itemLabel="#{bundle.default_select}" itemValue="null" />
</c:if>
<f:selectItems value="#{myBean.optionsList}" var="opt"
itemValue="#{opt}" itemLabel="#{opt.description}" />
<f:ajax event="change" render="msgSelectOption" />
</p:selectOneMenu>
<p:messages id="msgSelectOption" for="selectOption" display="text" />
当我尝试提交包含该字段的表单时,即使选择了一个值并且实际正确分配了 bean 中的值,也会显示 requiredMessage
我目前正在使用 primefaces 5.3 和 jsf 2.0(否:无法升级)
【问题讨论】:
-
您无法升级生产,但您可以只是为了解决这个问题尝试更新版本,看看它是否是偶然修复的。然后,您离找到解决方法或为您使用的 PF 版本创建解决该问题的补丁更近了一步……干杯(为什么您在 PF 组件中使用
f:ajax而不是p:ajax? -
在纠正这个错误之前,我没有处理这个特定的组件。我通常使用
p:ajax,但老实说,除了组件属性名称之外,我看不出有什么区别 -
令我困扰的是,它是整个表单中唯一这样的组件。而且我有几个领域几乎以相同的方式构建,工作得很好。
-
我有 2 条建议供您调查: 1. 也许 Faces Converter 以某种方式失败(尽管我没有看到它在代码 sn-p 中定义)。 2.可能optionsList的getter在bean中没有正确初始化。
-
我没有这个字段的转换器。列表创建的对象是与输入值相同的类的实例。我已经使用调试器检查了 getter,并且列表已正确初始化(另一个证明是我在加载页面时看到了正确的值)
标签: jsf primefaces