Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java selectOneMenu上的required是否仅接受true?_Java_Jsf 2 - Fatal编程技术网

Java selectOneMenu上的required是否仅接受true?

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

我有一个SelectOne菜单,它要求一些东西,默认值是空的,因为人们需要思考这个问题,实际上需要填写它

<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}”

感谢您的响应,但实际上它并没有完成它所能完成的任务。它需要让我保存它,而不仅仅是给予:价值是无效的,我已经发布了一个答案。比如说,你有没有试过?你读了我答案的最后一段了吗?哦,不,我实际上误读了你的第一句话。我想你的意思是,如果我加上这些,第一项将是“有效的”。不客气。不管怎样,我已经把最后一句移到了最上面。谢谢你的回答,但事实上这句话并没有起到应有的作用。它需要让我保存它,而不仅仅是给予:价值是无效的,我已经发布了一个答案。比如说,你有没有试过?你读了我答案的最后一段了吗?哦,不,我实际上误读了你的第一句话。我想你的意思是,如果我加上这些,第一项将是“有效的”。不客气。我已经把最后一句移到了最上面。