ssh,如何在jsp页面中判断struts2的action中对象属性的属性在数据库中是否为空

如:
action类中代码为

public class A extends ActionSupport{
private UserManager um;
private User user;

public String getUser(){
return user;

}

public void setUser(User user) {
this.user= user;
}
public String getUm(){
return um;

}

@Resource(name="um")

public void setUm(User um) {
this.um= um;
}
@Override

public String execute() throws Exception {

this.user=cm.load(id);
return "success";
}
算了,代码比较简单就不贴了

在User的实体类中有Userid,username和password等属性

那么我该如何在jsp也面中使用struts的标签或其他方法判断username在数据库里是否为空呢?

我知道struts2中有个<s:if>的标签,但是不知道这种情况test该怎么写,请前辈高手求助,因为是自学, 所以没其他人问了
像这样写之后:<s:if test="${User .username}==null">空值</s:if>
<s:else>${User.username}</s:else>
在控制台还会出现不同的错,有的时候是这样的:
org.apache.jasper.JasperException: /companys/company_danwei.jsp(37,1) According to TLD or attribute directive in tag file, attribute test does not accept any expressions

有的时候则是这样的.
java.lang.ClassNotFoundException: org.apache.jsp.companys.company_005fdanwei_jsp
我test里用el表达式的时候就帮我标黄线了,是不是得另外导包才能用。
字数受限...

亲,你从数据库中把数据提取出来赋到实体类里,(不管有没有数据都可以提取赋值)然后再判断,如果你想在action里判断,这样子:
if(user.username == null ){
System.out.print("username为空")
}
如果你想在JSP页面里判断,这样子:
<s:if test="${User .username}==null">
<a>username的值为空</a>
</s:if>
<s:else><s:property value="username"/></s:else>
希望可以帮到你,望采纳!
补充:你还可以这样子,在action里面再加一个属性,比如:
private String bj;//一个标记(get set 方法就不写了)
在action里判断如果user.username为空,就可以给给这个标记赋为“0”,不为空为“1”,在页面中直接判断bj的值就可以了。呵呵 这下应该能满足LZ的要求了吧。追问

其实我昨天也用el表达式试了半天,我测试了几次,在控制台还会出现不同的错,有的时候是这样的: According to TLD or attribute directive in tag file, attribute test does not accept any expressions(字数受限了写不下了)

追答

先试试这个吧,有的时候EL表达式回报一些我也讲不好的错,或许是属性绑定出了问题。再试试,加油!

追问

大家都说的很好,还真不容易给分,虽然都没有对的结果,但还是不好选,所以只好给回答最快的。让浪费时间你写了这么多,不好意思..谢谢

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-08-19
test里面的是表达式,跟java里面的用法差不多,具体的我没测试,不过${User.username==null}和${User.username}==null都可以,你可以试试楼上的答案追问

我test里用el表达式的时候就帮我标黄线了,是不是得另外导包才能用。

追答

不是的,那你考虑一下#User.username==null或者%User.username==null

追问

大家都说的很好,还真不容易给分,虽然都没有对的结果,但还是不好选,所以只好给回答最快的。真的很不好意思..谢谢

追答

分不分的无所谓了 只是希望能帮你解决问题 这才有成就感 话说你问题解决了没? 你在页面用${User.username}能显示姓名吗?如果这个值不为空的情况下

追问

解决了,收到你们的启发在jsp页面的这样才行,null得放{}的里面。谢谢.下次遇上问题再问问你们.放假了学校没人,学校里面做这个的也不多平时也不怎么找的到人问。

追答

有问题可以私聊我

追问

恩,好的,谢谢

第2个回答  2013-08-19
<s:if test="${User .username}==null">空值</s:if>
<s:else>${User.username}</s:else>

追问

这么用还是出错了
我test里用el表达式的时候就Myeclipse帮我标黄线了,是不是得另外导包才能用。指向黄线提示是这样的- Invalid attribute (test).

追答

不用啊

本回答被提问者采纳
第3个回答  2013-08-19
<!--用这个之前别忘记加Struts标签库 page属性-->
<c:if test="${username not empty }">
<!--要怎样.......-->
</c:if>追问

加了,问题已经解决了谢谢.

追答

那满意答案还不是我。。。伤心了。。

追问

你理解错我的意思了,我的意思是你回答之前就问题已经解决了。而且你们的答案好像都错的,所以就选了个最先回答的,用了都不管用,结果我自己试出来了..不过还是谢谢。

追答

嗯???

相似回答