我的用户实体类有几个成员变量(例如String firstName),这些变量是持久的,而一些瞬态变量(例如,瞬态布尔选择)则不是。
我已经使用了瞬态变量来捕获复选框选择,但是值永远不会被设置并正确执行,直到我设置另一个bean值为止。
即。如果User具有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>
答案 0 :(得分:0)
我们刚刚看到了解决此问题的方法。我们能够在我们的操作类(例如EntityQuery)中捕获所选变量的值,但它在实体公开的@PreUpdate方法中不起作用。这似乎现在工作正常。