我有一个h:selectOneMenu,它填充了枚举值,工作正常。唯一的问题是,当没有选择有效值时,我不知道如何覆盖标准的JSF错误消息。错误消息始终为bv:title: 'Choose' must be convertible to an enum from the enum that contains the constant 'Choose'.
虽然我已经指定了requiredmessage和validatormessage(适用于InputText),但只显示标准的JSF消息。
摘录:
<h:selectOneMenu id="title" value="#{personBean.person.title}" required="true"
requiredMessage="ERROR"
validatorMessage="ERROR">
<f:selectItem itemValue="Choose" />
<f:selectItems value="#{personBean.titleOptions}" />
<f:ajax event="blur" render="titleError" />
<f:validateRequired/>
</h:selectOneMenu>
<h:message for="title" errorClass="invalid" id="titleError" />
如何覆盖标准验证器消息? 或者更好 - 我可以创建带有自定义错误消息的JSF messages.properties的副本(不想再次在我自己的messages.properties中定义所有错误)吗?
答案 0 :(得分:11)
这不是“必需”错误消息。这是一个“转换器”错误消息。当前所选项目与预期类型或列表中的任何选项都不匹配时,可能会出现这种情况。只有当前所选项目为null
时,才会显示所需的消息。
您使用字符串值作为第一项。这不能转换为枚举。您需要将其设置为带有null
项值的项目标签。
<f:selectItem itemLabel="Choose" itemValue="null" />