[英]JSF Primefaces TabView problems
我在PF論壇上問了這個問題,但似乎沒人想回答,所以盡管我會在這里試試運氣。
我有一個ui:repeat,它在TabView內時,在Ajax調用后無法正確更新。
一個簡單的場景是我有一個ui:repeat指向一個ArrayList(ArrayList包含帶有字符串的簡單pojos)。 在其中,我有一個h:inputText,其值是pojo的String getter / setter。 ui:repeat包含在ah:panelGroup中。 我使用ap:commandButton來執行一個操作以更新ArrayList(只需向其添加幾個對象,即String的Math.random值),然后更新h:panelGroup。 ArrayList中的更新值未反映在ui:repeat輸入字段中。 這似乎僅影響輸入字段,因為outputText字段確實正確更新。 另外,如果我對ap:dataTable做同樣的操作,則輸入字段也會正確更新。 如果我刪除Tabview和Tab標記,則可以正常工作。
由於在刪除選項卡時可以正常工作,因此我只能認為這是一個錯誤,並且不能像這樣工作。 如果有人可以,請確認是否這樣,或者是否有可行的解決方法。 我需要使用ui:repeat,因為我的字段不是表格格式。 這是自PF 2.2遷移以來才發生的。 我目前在使用PF 3.1,Weblogic 10.3.4和Mojarra 2.0.4
<p:tabView>
<p:tab title="Test">
<h:form prependId="false">
<p:commandButton id="testStringCheck"
value="Test String Check"
process="@form"
update="testPanel"
action="#{testBean.generateVOwithRandomStrings}">
</p:commandButton>
<h:panelGroup id="testPanel" layout="block">
<ui:repeat value="#{testBean.voList}" var="entry">
<h:outputText value="#{entry.randomString}"/>
<p:inputText style="display:block;"
value="#{entry.randomString}"
size="15">
</p:inputText>
</ui:repeat>
</h:panelGroup>
</h:form>
</p:tab>
</p:tabView>
作為一種解決方法,我使用了ap:datagrid而不是ui:repeat。 這實現了我在ui:repeat中的外觀,因此很高興。 希望此錯誤將在將來的版本中修復。
臨時解決方案:在h:panelGroup外部插入:
<p:outputPanel defered="true" delay="1" ..>
並更新outputPanel而不是panelGroup
或使用數據列表組件代替ui:repeat。
再說一遍,我不確定,但是您可以嘗試,所以更新類而不是id:
<h:panelGroup id="testPanel" layout="block" styleClass="testPanelCl" ../>
和更新: @(.testPanelCl)
,不要忘記panelGroup的ID,沒有ID JSF不能按類更新
這是Primefaces commandButton中的錯誤。 請參見以下線程:
http://forum.primefaces.org/viewtopic.php?f=3&t=17454
您可以嘗試更換
<p:commandLink id="testStringCheck" ... update="@form" />
使用<h:commandLink>
<h:commandLink id="testStringCheck" render="@form"/>
另外,在上面的鏈接中,有人發布了一種有趣的方法,使您能夠正確找到要更新的正確clientId。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.