Struts2将空字符串参数转换为“int”

时间:2010-06-10 01:23:09

标签: java struts2 type-conversion

如何使用Struts2将空字符串转换为int。当应用程序遇到没有值的此参数时,例如从空文本字段中,它会抛出以下异常。

java.lang.NoSuchMethodException:
com.XXXXXXXXXXXX.setID([Ljava.lang.String;)

其中ID是整数,URL是:

  

Something.action ID =安培;其他= RAWR

有没有办法在不使用Integer(类)的情况下执行此操作?我必须写一个类型转换器吗?

2 个答案:

答案 0 :(得分:5)

如果将id参数声明为Integer struts,则会将空字符串转换为null。

public void setId(Integer id){ 
...
}

来自:http://struts.apache.org/2.0.14/docs/type-conversion.html#TypeConversion-NullandBlankValues

  

空值和空白值

     

某些属性不能设置为null。   像boolean和int这样的原语不能   是空的。 如果您的行动需要或   将接受null或空值,使用   对象等价物布尔和   整数。同样,一个空白字符串“”   不能在原语上设置。在   写作的时候,还有一个空白字符串   无法在BigDecimal或。上设置   BigInteger的。使用服务器端验证   防止无效值   设置您的属性(或处理   适当的转换错误。)

答案 1 :(得分:1)

我不知道你为什么不喜欢首先使用Integer。但是,您可以将set方法设为,

public void setId(String id) {
     ....             // convert your string to int here, as you wish
     this.id = intId; // 
}

如果您有一些默认值。您可以使用commons-lang StringUtils.defaultIfEmpty(...)方法。

访问者仍然是public int getId(){...}。试试这个。