2010-06-05 114 views
0

我的用戶實體類有幾個成員變量(例如String firstName),它們是持久化的,並且一些瞬態變量(例如暫時布爾值被選中)不是。在表單提交時沒有正確捕獲瞬態變量

我已經使用瞬態變量來捕獲複選框的選擇,但總是該值永遠不會被設置和正確處理,直到我設置了另一個bean值。

即如果用戶擁有的firstName如果我只是選擇了價值似乎並不如我所選中該複選框上的更新 被設置(映射到一個文本字段),並選擇(映射​​到一個複選框) 和firstName字段中,「selected」值被正確捕獲

有誰能告訴我爲什麼會發生這種情況?

@Entity @Table(name = "User") 
public class User implements Serializable { 

    @Id @GeneratedValue(strategy = IDENTITY) 
    @Column(name = "id", unique = true, nullable = false, insertable = false, updatable = false) 
    private Integer id; 

    @Column(name = "first_Name") 
    private String firstName; 

    @Transient private boolean selected; // getters and setters 
} 

      <rich:dataTable value="#{users}" var="_user" style="width:auto;"> 
... 
       <rich:column> 
        <f:facet name="header">Select</f:facet> 
        <h:selectBooleanCheckbox value="#{_user.selected}"/> 
       </rich:column> 
      </rich:dataTable> 
+2

哇,那全是一句話。對不起,我不明白一件事。也許顯示代碼? – Bozho 2010-06-05 07:16:46

+0

@Entity @Table(name = 「用戶」) 公共類用戶實現Serializable { @Id @GeneratedValue(策略= IDENTITY) @Column(name = 「ID」,獨特= TRUE,可爲空=假, insertable = false,updatable = false) private Integer id; @Column(name =「first_Name」) private String firstName; @瞬態 已選擇private boolean; // getter和setter \t \t } 的 Achaius 2010-06-05 07:37:55

+0

的代碼添加到你的問題(編輯)。這種方式幾乎是不可讀的。 – Bozho 2010-06-05 07:57:53

回答

0

我們剛剛看到了解決此問題的方法。我們能夠在我們的操作類(例如EntityQuery)中捕獲所選變量的值,但它在實體公開的@PreUpdate方法中不起作用。這似乎現在工作正常。