将空字符串传递给带有java.lang.Integer属性的.tag会导致0(非空)
我有一个.tag文件,其属性类型为java.lang.Integer,如下所示:将空字符串传递给带有java.lang.Integer属性的.tag会导致0(非空),java,jsp,jsp-tags,Java,Jsp,Jsp Tags,我有一个.tag文件,其属性类型为java.lang.Integer,如下所示: <%@ attribute name="userId" required="true" type="java.lang.Integer"%> 将空字符串传递到此标记时,该属性的值为0,而不是null(我希望使用java.lang.Integer和all) 我错过什么了吗?在这种情况下,有没有办法强制属性值为null?我的猜测是,如果类型转换失败(即传入的值不会解析为整数,因此Integer.par
<%@ attribute name="userId" required="true" type="java.lang.Integer"%>
将空字符串传递到此标记时,该属性的值为0,而不是null(我希望使用java.lang.Integer和all)
我错过什么了吗?在这种情况下,有没有办法强制属性值为null?我的猜测是,如果类型转换失败(即传入的值不会解析为整数,因此Integer.parseInt抛出NumberFormatException),那么属性将初始化为0。这种方法很有意义,因为它区分了这种情况和空对象引用
在.tag文件中使用字符串属性如何?然后,您可以测试它的值(null或empty等),并根据需要转换为整数 我的猜测是,如果类型转换失败(即传入的值不会解析为整数,因此Integer.parseInt抛出NumberFormatException),则属性将初始化为0。这种方法很有意义,因为它区分了这种情况和空对象引用
在.tag文件中使用字符串属性如何?然后,您可以测试它的值(null或empty等),并根据需要转换为整数 将属性定义为字符串确实可以像您所建议的那样工作,我只是希望在使用bum值调用标记时可以强制执行异常。这在这里解释得非常清楚:。它与您正在使用的Tomcat版本相关。Tomcat 8修复了这种行为,或者您可以设置一个系统属性:-Dorg.apache.el.parser.convere_TO_ZERO=false将属性定义为字符串确实可以像您建议的那样工作,我只是希望在调用带有bum值的标记时可以强制执行异常。这里解释得非常清楚:。它与您正在使用的Tomcat版本相关。Tomcat8修复了这种行为,或者您可以设置一个系统属性:-Dorg.apache.el.parser.concure\u TO\u ZERO=false