h:selectOneMenu required =“true”在验证失败时恢复为bean值

时间:2011-12-02 03:08:46

标签: jsf jsf-2 mojarra

我在创建/编辑表单上有类似的内容:

<h:selectOneMenu value="#{bean.value}" required="true" ... >
  <f:selectItem itemLabel="-- Select --" itemValue=""/>
  <f:selectItems .../>
</h:selectOneMenu>

在创建新对象的情况下,required验证按预期工作。

在编辑对象的情况下,如果我将有效值更改为占位符“ - 选择 - ”,我会得到验证失败w / expected requiredMessage,因为itemValue为空(“”); 然而,HTML <select>将恢复为已从bean中选择的任何选项,而不是保留表单提交中的无效用户输入。

重申一下,required=true本身上的h:selectOneMenu工作正常,生成预期的消息 - 唯一错误的是恢复到bean值的值,而不是保留空白提交的值。 (我在Chrome开发人员工具栏中确认,<select>确实发布了一个空字符串。)

为什么会这样?更确切地说,为什么h:selectOneMenu的行为不像h:inputText,其中UIInput从表单中显示无效的用户输入,并且不会从bean刷新其值?这两个控件都扩展了相同的UIInput基类并实现了EditableValueHolder,因此我希望它们的生命周期表现相同。

另外,为了澄清,我在web.xml中的任何地方都没有INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL上下文参数。

这是Mojarra 2.1.3 / Glassfish 3.1.1上的JSF应用程序。

0 个答案:

没有答案