2017-10-15 73 views
0

我是JSF的新手。我有一個c:foreach元素從bean獲取圖像列表。每個圖像列表元素都是一個Image對象(由我創建),它具有一個臨時布爾字段。該字段最初是錯誤的。我也有一個outputText來顯示布爾值。現在我想要點擊一個按鈕時,boolean字段被設置爲true,並且outputText用新的布爾值刷新。我試過,但布爾值總是假。這可能嗎?它看起來像我設置布爾字段的圖像不一樣,我得到布爾字段,或者foreach中的圖像元素沒有更新。裏面c:foreach設置JPA實體的瞬態字段並檢索它

JSF代碼:

<c:forEach items="#{publicGalleryImageShowController.images}" var="img"> 
      <h:form> 
       <h:commandButton 
        action="#{img.setShowComments(true)}" 
        value="Show/Hide"> 
        <f:ajax render="co-#{img.id}" /> 
       </h:commandButton> 
      </h:form> 

      <h:panelGroup id="co-#{img.id}"> 
       <h:outputText value="#{img.showComments}" /> 
      </h:panelGroup> 
</c:forEach> 

Java圖像類JPA註釋:

@Entity 
public class Image { 
    private boolean showComments; 
    /*other fields*/ 

    @Transient 
    public boolean isShowComments() { 
     return showComments; 
    } 
    public void setShowComments(boolean showComments) { 
     this.showComments = showComments; 
    } 

    /*other getters and setters*/ 
} 
+0

對未來的JSF問題的建議:只要問題不能用簡單的使用main()方法的vanilla Java應用程序來證明,請不要使用[java]標記。 [java]用戶不是每個定義都能夠理解JSF問題,也不是每個定義都有興趣在他們的列表中看到JSF問題。 – BalusC

回答

0

BalusC是正確的。

你的代碼工作

action="#{img.setShowComments(true)}" 

我創建GitHub上演示應用程序:https://github.com/simasch/46756639

請檢查出來。

+0

請在作爲答案休假之前嘗試一下。 – BalusC

+0

好評,Euleos問題的解決方案是什麼? –