如何使用Struts2将空字符串转换为int。当应用程序遇到没有值的此参数时,例如从空文本字段中,它会抛出以下异常。
java.lang.NoSuchMethodException:
com.XXXXXXXXXXXX.setID([Ljava.lang.String;)
其中ID是整数,URL是:
Something.action ID =安培;其他= RAWR
有没有办法在不使用Integer(类)的情况下执行此操作?我必须写一个类型转换器吗?
答案 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(){...}
。试试这个。