<h:form id="formEdit">
<p:selectOneMenu value="#{testView.selection}"
required="true">
<f:selectItem itemValue="noMenu" itemLabel="selectOneMenu not rendered"/>
<f:selectItem itemValue="haveMenu" itemLabel="selectOneMenu rendered"/>
<p:ajax update="formEdit"/>
</p:selectOneMenu>
<p:panel>
<p:selectOneMenu id="conditionallyRnedered" value="#{testView.value}"
rendered="#{testView.selection eq 'haveMenu'}"
required="true">
<f:selectItem itemValue="#{null}" itemLabel="-" noSelectionOption="true"/>
</p:selectOneMenu>
</p:panel>
<p:messages id="messages"/>
<p:commandButton value="Submit"/>
</h:form>
元器件"conditionallyRnedered"
是必需的,并呈现的页面上后,我选择在第一菜单"haveMenu"
值。这个组件只有空白选项,并且初始化它没有在页面上呈现。如果我按下提交按钮,然后反应是:primefaces不验证AJAX渲染分量
<partial-response><changes>
<update id="javax.faces.ViewState"><![CDATA[stateless]]></update>
</changes></partial-response>
没有验证错误。如果我从"#{testView.selection eq 'haveMenu'}"
改变"conditionallyRnedered"
rendered
属性的值只是"true"
,则反应是:
<partial-response><changes>
<update id="javax.faces.ViewState"><![CDATA[stateless]]></update>
<extension ln="primefaces" type="args">{"validationFailed":true}</extension></changes>
</partial-response>
验证错误返回。问题是:
- 为什么有条件渲染的组件未验证?
- 有可能让他们验证?
UPD 本来在我的问题是不存在的Bean源代码,其中豆声明为@ViewScoped
。在阅读@BalusC comment后,我尝试将范围从@ViewScoped
更改为@SessionScoped
,之后验证工作正常。其中javax.faces.ViewState
响应从stateless
改变一些观点ID:
<update id="javax.faces.ViewState">-5902669082498843838:729675320168079573</update>
我仍然怀疑,这是解决方案或仍在解决方法,因为我认为,虽然我们不离开页面@ViewScoped
bean的实例存在。也许这种行为是由于在同一页面呈现另一个bean的事实造成的,其范围为@SessionScoped
。
@MahendranAyyarsamyKandiar不,结果是一样的。属性'update'正在工作 - 有条件渲染的组件在ajax请求后显示在窗体上。组件'p:messages'没有用处,因为响应中没有验证错误,没有任何显示。 – bobzer
我已添加答案。请检查它是否有效 –
为什么在您的xhtml中添加了? –