我使用struts2数据模型来接受请求参数,如果用户没有在input元素中键入任何值,则模型类中的相应属性设置为“”,但我希望它为null,而不是“”。 这是我的代码:
class User{
private String userName;
private String userId;
//setter & getter omitted
}
class UserAction extends ActionSupport{
private User user;
//setter & getter omitted
}
在UserAction
类中,我可能需要做一些业务验证或其他事情,我只使用语句lik if(user.getUserId() !== null)
,现在这个条件返回true,即使用户没有在{{1}中输入任何内容}}。
也许我可以像这样写:<input type="text" name="user.userId" />
,它有点累,在我的代码中有很多这样的地方,我想要一个方便的方法来实现这一点,过滤器可以做到这一点吗?如果可以有任何exsiting过滤器或拦截器?
感谢。
答案 0 :(得分:1)
为什么不选择一种更抽象的,面向对象的,与框架无关的方法呢?
class User{
private String userName;
private String userId;
//setter & getter omitted
public boolean isEmpty() {
return (userId==null || "".equals(userId));
}
}
/* somewhere in your Java code: */
if (!user.isEmpty()) {
<!-- somewhere in your JSP code: -->
<s:if test="!user.empty()" >
或者,您可以更改getter
以返回null
,即使该值为empty String
,(反之亦然),但通常此强制效果不佳。