JSF 2 Mojarra —在f:ajax渲染后不接受必填属性

|| 考虑这个简单的例子。如果我有这样的表单,则在inputText中没有任何值的情况下提交时,显然会收到验证错误:
<h:form id=\"testForm\" prependId=\"false\">

    <h:selectOneMenu 
        id=\"testSelectOneMenu\" 
        value=\"#{backButtonTestBean.selection}\">
        <f:selectItem itemValue=\"mickey\" itemLabel=\"Mickey\" />    
        <f:selectItem itemValue=\"mouse\" itemLabel=\"Mouse\" />
        <f:ajax execute=\"@this\" render=\"panel\" />
    </h:selectOneMenu>                 

       <h:panelGroup layout=\"block\" id=\"panel\">
           <h:panelGroup layout=\"block\">
               <h:inputText id=\"requiredField\" required=\"true\" />
           </h:panelGroup>    
       </h:panelGroup>

       <h:commandButton value=\"submit\" action=\"#{backButtonTestBean.submit}\" />

</h:form>
但是,当我重新渲染带有f:ajax的panelGroup时,所要求的属性未得到遵守,并且我可以使用空值提交:
<h:form id=\"testForm\" prependId=\"false\">

    <h:selectOneMenu 
        id=\"testSelectOneMenu\" 
        value=\"#{backButtonTestBean.selection}\">
        <f:selectItem itemValue=\"mickey\" itemLabel=\"Mickey\" />    
        <f:selectItem itemValue=\"mouse\" itemLabel=\"Mouse\" />
        <f:ajax execute=\"@this\" render=\"panel\" />
    </h:selectOneMenu>                 

       <h:panelGroup layout=\"block\" id=\"panel\">
           <h:panelGroup layout=\"block\" rendered=\"#{backButtonTestBean.selection == \'mouse\'}\">
               <h:inputText id=\"requiredField\" required=\"true\" />
           </h:panelGroup>    
       </h:panelGroup>

       <h:commandButton value=\"submit\" action=\"#{backButtonTestBean.submit}\" />

</h:form>
我正在mojarra 2.1.1中进行测试。任何建议表示赞赏。     
已邀请:
更新:我想通了。 BackButtonTestBean在请求范围内,因此当我提交表单时,testSelectOneMenu的值不是\'mouse \'。因此,它没有被渲染,因此验证器无效。更改为@ViewScoped并按预期工作。     

要回复问题请先登录注册