我有一個在primefaces tabPanel中有三個選項卡的彈出窗口。中間是一個名爲「composicao」的表格,當用戶標記位於第一個選項卡中的複選框時,此選項卡會呈現。 這些表格有很多輸入,選擇和複選框,用戶可以按任意順序填寫,所以如果用戶填寫所有字段,然後標記複選框,則會清除所有字段,使複選框更新tabView。我嘗試設置一些字段的立即屬性爲true,並將p:ajax process屬性設置爲@all,但是這種方法沒有任何反應。當更新p時,字段被清除:tabView
這是一個tabpanel的代碼:
<h:panelGroup id="abasCadastroProduto">
<p:tabView>
<p:tab title="base">
<ui:include src="../../tabs/abaEdicaoBaseProduto.xhtml"/>
</p:tab>
<p:tab id="abaComposicao" title="composicao" rendered="#{produto.composto}">
<ui:include src="../../tabs/abaEdicaoComposicaoProduto.xhtml"/>
</p:tab>
<p:tab
title="tributacao">
<ui:include src="../../tabs/abaEdicaoTributacaoProduto.xhtml"/>
</p:tab>
</p:tabView>
</h:panelGroup>
這是第一個選項卡的部分代碼:
<h:panelGroup layout="block">
<p:fieldset legend="geral">
<h:panelGroup layout="block">
<h:selectBooleanCheckbox id="produtoAtivoCheck"
value="#{produto.ativo}"/>
<h:outputLabel value="ativo" for="produtoAtivoCheck"/>
<h:selectBooleanCheckbox id="produtoMovimentoCheck"
value="#{produto.movimentaEstoque}"/>
<h:outputLabel value="movimento" for="produtoMovimentoCheck"/>
<!-- THIS IS THE CHECKBOX -->
<h:selectBooleanCheckbox id="produtoCompostoCheck"
value="#{produto.composto}">
<p:ajax event="change" update="abasCadastroProduto" process="@all"/>
</h:selectBooleanCheckbox>
<h:outputLabel value="composto" for="produtoCompostoCheck" />
</h:panelGroup>
.......
<h:panelGroup layout="block">
<h:outputLabel value="descricao"/>
<p:inputText value="#{produto.descricao}" required="true" immediate="true"
requiredMessage="obrigatorio"/>
<h:outputLabel value="complemento"/>
<p:inputText value="#{produto.descricaoComplementar}"/>
</h:panelGroup>
......
</p:fieldset>
</h:panelGroup>
有沒有一種辦法可以解決這個問題? 我認爲是unnaceptable用戶看到他們花一些時間來填補,被清除場,當你在一個複選框點擊...
也許驗證錯誤發生在窗體的某處,並導致值不更新自己?你有嵌套表單的情況嗎?您的表單是否將其ID添加到子元素上?也許panelGroup id實際上是'form:abasCadastroProduto',因此它實際上並沒有得到更新?除非我們看到所有的代碼,否則無法分辨。 – 2012-01-06 13:08:40
你可以刪除像'styleClass'等所有不必要的代碼嗎?你還可以突出顯示哪個複選框導致了問題? – 2012-01-06 13:19:06
是表單正在預先編號... 但我相信問題可能是驗證,這種形式有很多必填字段,但我沒有收到任何必需的現場消息... – brevleq 2012-01-06 14:26:15