处理Spring请求处理程序中请求中的空值

时间:2011-10-20 13:32:50

标签: java spring spring-mvc

在春季3:
我的豆子:

public class UserFormBean {

    private String userEmail;
    private String userMobNo;

    public String getUserEmail() {
        return userEmail;
    }
    public void setUserEmail(String userEmail) {
        this.userEmail = userEmail;
    }
    public String getUserMobNo() {
        return userMobNo;
    }
    public void setUserMobNo(String userMobNo) {
        this.userMobNo = userMobNo;
    }

}

我在Controller中的请求处理程序:

@RequestMapping(value = "/userData", method = RequestMethod.GET)
String userData(UserFormBean bean){
    //code to handle incoming data
}

如果用户在请求时没有在'userEmail''userMobNo'属性中设置任何值,则默认情况下spring会在这些属性中设置null,并且当我获得这些属性的值时String str = bean.getUserEmail();我的请求处理程序返回null in double quote "null"

当它们包含null时,有没有办法将这些"" (blank)值转换为null,因为我创建了一个额外的处理程序来处理这些"null"值。或者更好的想法来解决这个问题。

由于

3 个答案:

答案 0 :(得分:2)

我认为最简单的方法是将属性初始化为空字符串:

private String userEmail = "";
private String userMobNo = "";

答案 1 :(得分:1)

我怀疑使用“\”null \“”为新值调用setter。试试这个:

public void setUserEmail(final String newValue)
{
  if (StringUtils.isNotBlank(newValue) &&
      "\"null\"".equals(newValue))
  {
    userEmail = newValue;
  }
  else
  {
    userEmail = StringUtils.EMPTY;
  }
}

答案 2 :(得分:1)

您可以定义命名“网络方法”的标准,例如:

@RequestMapping(value = "/userData", method = RequestMethod.GET)
String webUserData(UserFormBean bean){
    //code
}

如果您的所有方法都以 web * 开头,那么您可以编写一个方面,根据您的意愿将所有参数初始化。

如果您需要有关创建和定义方面的帮助,请询问。

更新:创建和定义方面

我不会为你编写代码,因为通过阅读文档来学习它会更好 - 你将会了解更多额外的细节。

也就是说,创建方面的步骤是:

  1. Enable AspectJ support - 此步骤仅在您的整个应用中完成一次
  2. Declare an aspect - 创建一个具有@Aspect注释
  3. 的类 在您的方面
  4. Declare a pointcut - 指定代码中的兴趣点,在您的情况下,方面将执行某些操作, web * 方法
  5. 在您的方面
  6. Declare an advice - @Before,@ AfterReturning,@ AfterThrowing,@ After,@ Around,在这里您将编写您的特定方面代码
  7. 在您的方面代码中,您必须访问current method arguments并执行逻辑以设置字符串的空字符串值。