2011-05-04 34 views
0

考虑一下这个简单的例子。如果我有一个表格这样我在inputText的没有价值提交时显然得到了验证错误:JSF 2 Mojarra - f:ajax渲染后不需要的属性

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

但W/F,当我重新呈现panelGroup中:AJAX所需的属性不被尊重和我可以提交一个空值:

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

我在莫哈拉测试2.1.1。任何建议表示赞赏。

+0

“w /”的意思是说“与”?我很难理解这个问题。 – BalusC 2011-05-04 15:24:02

+0

是的。聊天不是这个网站的坏习惯。我会停止使用它并相应地编辑这篇文章。 – 2011-05-04 15:29:29

+0

对于你不知道的情况,如果你自己找到了解决方案,那么你有资格发布它作为你自己的答案。 – BalusC 2011-05-04 15:39:03

回答

0

更新:我想通了。 BackButtonTestBean在请求范围内,所以当我提交表单时,testSelectOneMenu的值不是'鼠标'。因此它没有被呈现,因此验证者是无效的。更改为@ViewScoped并按预期工作。