Java selectOneMenu上的required是否仅接受true?
我有一个SelectOne菜单,它要求一些东西,默认值是空的,因为人们需要思考这个问题,实际上需要填写它Java selectOneMenu上的required是否仅接受true?,java,jsf-2,Java,Jsf 2,我有一个SelectOne菜单,它要求一些东西,默认值是空的,因为人们需要思考这个问题,实际上需要填写它 <h:selectOneMenu id="fileSecurity" value="#{flowScope.application.fileSecurity}" required="true" > <f:selectItem itemLabel="" itemValue="" noSelectionOption="true"/> <f:s
<h:selectOneMenu id="fileSecurity" value="#{flowScope.application.fileSecurity}" required="true" >
<f:selectItem itemLabel="" itemValue="" noSelectionOption="true"/>
<f:selectItem itemLabel="ja" itemValue="true" />
<f:selectItem itemLabel="nee" itemValue="false" />
</h:selectOneMenu>
现在,当您填写它给出的空值:“managementTabs:ApplicationManagementForm:fileSecurity:需要填写”时,我得到的就是这个值
这是正确的
当我单击yes或true值时,它接受anwser
但当我单击“否”或“false”时,它会给出:
“管理选项卡:应用程序管理表单:文件安全性:验证错误:值无效”
- 为什么Jsf2.0只接受true作为有效的awnser而不接受false
- 有办法解决这个问题吗?还是我必须编写一个自定义验证器
false
似乎在某种程度上与noSelectionOption
的空字符串值冲突。第一项的以下条目适用:
及
及
我只是不明白为什么。这是不合逻辑的。要找到真正的答案,我需要运行调试器
更新:我调试并在
SelectUtils#valueIsNoSelectionOption()
(Mojarra)中找到了罪魁祸首。noSelectionOption
的空字符串被强制为boolean false
而不是boolean null
,因此与提交值的比较有效,因此所选值无效。这是“设计的”。您确实需要显式指定一个itemValue=“#{null}”
提交的false
值似乎与noSelectionOption
的空字符串值在某种程度上冲突。第一项的以下条目适用:
及
及
我只是不明白为什么。这是不合逻辑的。要找到真正的答案,我需要运行调试器
更新:我调试并在
SelectUtils#valueIsNoSelectionOption()
(Mojarra)中找到了罪魁祸首。noSelectionOption
的空字符串被强制为boolean false
而不是boolean null
,因此与提交值的比较有效,因此所选值无效。这是“设计的”。您确实需要显式指定一个itemValue=“#{null}”
感谢您的响应,但实际上它并没有完成它所能完成的任务。它需要让我保存它,而不仅仅是给予:价值是无效的,我已经发布了一个答案。比如说,你有没有试过?你读了我答案的最后一段了吗?哦,不,我实际上误读了你的第一句话。我想你的意思是,如果我加上这些,第一项将是“有效的”。不客气。不管怎样,我已经把最后一句移到了最上面。谢谢你的回答,但事实上这句话并没有起到应有的作用。它需要让我保存它,而不仅仅是给予:价值是无效的,我已经发布了一个答案。比如说,你有没有试过?你读了我答案的最后一段了吗?哦,不,我实际上误读了你的第一句话。我想你的意思是,如果我加上这些,第一项将是“有效的”。不客气。我已经把最后一句移到了最上面。