2012-02-07 114 views
2

我在PF論壇上問過這個問題,但似乎沒有人想回答,所以我儘管我會在這裏嘗試我的運氣。JSF Primefaces TabView問題

我有一個用戶界面:重複一遍,當它在一個TabView中的Ajax調用後沒有被正確更新。

簡單的場景是我有一個用戶界面:重複指向一個ArrayList(ArrayList包含簡單的pojos與一個字符串)。在這裏我有一個h:inputText,它的值是pojo的String getter/setter。 ui:repeat包含在h:panelGroup中。我使用p:commandButton來運行一個動作來更新ArrayList(只需向它添加一些對象給該String的Math.random值),然後更新h:panelGroup。 ArrayList中的更新值不反映在ui:重複輸入字段中。這隻會影響輸入字段,因爲outputText字段會正確更新。另外,如果我對p: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> 

回答

0

這是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/

+0

感謝您的回覆,但這並未解決問題。我已經嘗試過h:commandButton和pf版本。 – andyfinch 2012-02-07 16:11:46

+0

@andyfinch您是否嘗試刪除進程屬性?這可能沒有必要。 – 2012-02-07 16:31:26

+0

它是否默認爲表單呢?即使這樣做,我仍然會將其添加爲可讀性。 – andyfinch 2012-02-08 08:57:04

1

由於我使用的p解決方法:數據網格,而不是一個用戶界面:重複。這實現了我在ui中的表現:重複,讓我很開心。希望這個錯誤將在未來的版本中得到修復。

0

溫度溶液:插入外部H:panelGroup中:

<p:outputPanel defered="true" delay="1" ..> 

和更新outputPanel代替panelGroup中

或者使用數據列表組件,而不是用戶界面:重複。

一多,我不知道,但你可以嘗試,所以更新類,而不是ID:

<h:panelGroup id="testPanel" layout="block" styleClass="testPanelCl" ../> 

和更新:@(.testPanelCl),不要忘了panelGroup中的ID,不進行身份JSF不能被更新