【发布时间】:2011-09-18 12:05:23
【问题描述】:
我有 Postgresql 8.4 表
CREATE TABLE users
(
username character varying(50) NOT NULL,
"password" character varying(50) NOT NULL,
enabled boolean NOT NULL,
type_of_signature boolean NOT NULL,
companyusers2_id integer NOT NULL,
numberorganizac character(8) NOT NULL,
);
在那张表中我只有一行:“”admin”;”admin”;TRUE;TRUE;1;”12345678”
我有 JPA
@Entity
@Table(name="users")
public class Users implements Serializable {
...
private boolean typeOfSignature;
...
@Column(name="type_of_signature")
public boolean getTypeOfSignature() {
return this.typeOfSignature;
}
public void setTypeOfSignature(boolean typeOfSignature) {
this.typeOfSignature = typeOfSignature;
}
...
}
我有 JSF
<h:outputText value="Type of signature is NULL" rendered="#{curUser.typeOfSignature == null}"/>
<h:outputText value="Type of Signature is TRUE" rendered="#{curUser.typeOfSignature}"/>
<h:outputText value="Type of Signature is FALSE" rendered="#{!curUser.typeOfSignature}"/>
我总是在结果页面上得到“签名类型为 NULLType of Signature is FALSE”。
但我的 bean 中也有方法
if(getCurUser().getTypeOfSignature())
{
jpaBean.pushSignature(dataItem, 1);
}
else
{
jpaBean.pushSignature(dataItem, 2);
}
而且它的工作原理取决于用户签名的类型。
为什么我在 JSF 中总是得到 NULL?还是我是新手,做错了什么?
【问题讨论】:
-
我不知道 JSF,但我确实看到您的字段是
boolean,而不是Boolean。getCurUser().getTypeOfSignature() == null将是 Java 中的编译错误。这就是 JSF 处理错误情况的方式吗? -
我试过
Boolean和boolean。两种变体产生相同的结果 签名类型为 NULL 签名类型为 FALSE -
对不起,我的错。我应该使用
#{BEAN_NAME.curUser.typeOfSignature} -
@Adrian,我相信由于自动装箱功能,这不会是编译错误。 en.wikipedia.org/wiki/…
-
@maple_shaft,根据 Eclipse 中的快速测试,
The operator == is undefined for the argument type(s) boolean, null。自动拆箱会将函数参数中的boolean提升为Boolean,但不允许与 null 进行比较。
标签: java postgresql jsf jpa boolean