<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中添加了? –