繁体   English   中英

Z798476CFD70310827337C1DDFDCC4D664Z 2 Mojarra — 在 f:ajax 渲染后,必需的属性不被兑现

[英]JSF 2 Mojarra — Required attribute not being honored after f:ajax render

考虑这个简单的例子。 如果我有这样的表单,那么在 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 在请求 scope 中,所以当我提交表单时 testSelectOneMenu 的值不是“鼠标”。 因此它没有被渲染,因此验证器是无效的。 更改为 @ViewScoped 并按预期工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM