簡體   English   中英

JSF Primefaces TabView問題

[英]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。

http://paste.kde.org/177698/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM