-
那个啥,这是不是struts2.1.6的一个bug。。。。囧。。10
int的validator就是不管用。。。
是这样的。。
我这里Action里面的对象是个String。但是我其实要求它要符合整数的形式的。
好的,那么提交上来的form里的那个对象就被struts2识别成String类型的,这都是没问题的。。。
可是这应该不妨碍我做int的validation。。。结果。。。
一直报java.lang.Integer cannot be cast to java.lang.String。。。
我以为是我的custom validator有问题。。。结果刚才看了一下xworks的代码。。。发现
IntRangeFieldValidator是调用AbstractRangeFieldValidator来验证的。
public void validate(Object object) throws ValidationException { Object obj = getFieldValue(getFieldName(), object); Comparable value = (Comparable) obj; // if there is no value - don't do comparison // if a value is required, a required validator should be added to the field if (value == null) { return; } // only check for a minimum value if the min parameter is set // 这里,value是个String啊。。。怎么好直接调value的compareTo。。。。囧 if ((getMinComparatorValue() != null) && (value.compareTo(getMinComparatorValue()) < 0)) { addFieldError(getFieldName(), object); } // only check for a maximum value if the max parameter is set if ((getMaxComparatorValue() != null) && (value.compareTo(getMaxComparatorValue()) > 0)) { addFieldError(getFieldName(), object); } }
于是无语中。。。
问题补充:
@jasel
因为ldap的schema定义的string。。。但是实际上是个uid,这个uid根据系统不同而区域不同。。。
@dwangel
no way,我的那个property是String类型的
@lovewhzlq
我是觉得,这个东西它既然已经分开实现了IntegerRangeFieldValidator还有DoubleRangeFieldValidator还有XXXFieldValidator。。。那么就应该按照具体语义进行validate。。。否则为啥要分开?
2009年8月20日 09:54
7个答案 按时间排序 按投票排序
-
引用
我这里Action里面的对象是个String。但是我其实要求它要符合整数的形式的。
好的,那么提交上来的form里的那个对象就被struts2识别成String类型的,这都是没问题的。。。
可是这应该不妨碍我做int的validation。。。结果。。。
一直报java.lang.Integer cannot be cast to java.lang.String。。。
这个是你想当然了。
如果跟踪进去,你可以看到,是 你property对象 跟 Validator的数值对象比较。
Property : String property
Validator-Value : Integer minValue
property.compareTo(minValue)
你说这样的比较能不报错吗?
IntegerRangeFieldValidator这种类型的验证器不是文件验证……2009年8月22日 15:48
-
IntegerRangeFieldValidator 明显是对Integer对象的
DoubleRangeFieldValidator 明显是对Double对象的
不能说你声明property是String,但是内容是"1234"就能用Integer的处理。
xwork是为了方便,提供了在property声明为Integer时,自动将参数
从String转换到Integer的功能。
没提供你类型定义是String,根据内容来自动决定 用什么类型比较的功能。2009年8月22日 15:42
-
如果,实际类型你要保存的类型是String
但是仅仅是说其代表的值是数据,要限制大小。
那当然不能直接用数字的RangeValidate了。
为啥不能用Integer?
你声明属性为String,然后用数字的validate……2009年8月22日 15:38
-
同意 lovewhzlq 的回答
具体的是这样的 String
public final class String
implements java.io.Serializable, Comparable<String>, CharSequence2009年8月20日 16:35
-
这个貌似不是xwork问题。
应该你的action 的属性填充的配置没配好属性。
另外,最好不要用int直接声明属性,用Integer
基本类型不能正确启动自动转换机制。2009年8月20日 09:54
相关推荐
Struts2.1.6是Apache Struts框架的一个版本,这是一个流行且强大的Java Web应用程序开发框架,用于构建和维护可扩展、易于维护的MVC(Model-View-Controller)架构的应用程序。Struts2框架提供了丰富的特性,如动作...
struts2-dojo-plugin-2.1.6.jar 解决了datetimepicker显示月份乱码的问题,显示9、10、11、12月份时出现乱码,本包修改了该bug
XWork 2.1.6 版本是这个框架的一个稳定版本,提供了一些改进和修复了已知问题,以提高应用性能和稳定性。 ### XWork 框架概述 XWork 提供了一种灵活的机制来定义和执行业务操作,它的核心特性包括: 1. **Action...
但在Struts 2.1.6版本中,这个配置对POST请求的中文乱码问题无效,这是一个已知的bug。升级到2.1.8.1或更高版本可以修复这个问题,因为官方已经改进了过滤器处理字符编码的方式。 2. **POST乱码问题**: POST请求...
Struts2.1.6是Struts2的一个具体版本,发布于2009年。在这个版本中,可能包含了对之前版本的bug修复、性能优化以及新的特性和改进。例如,它可能提供了更多的拦截器、新的插件支持,或者增强了安全性和稳定性。使用...
总的来说,这个压缩包提供了处理JSON数据所需的关键组件,包括一个通用的JSON库Gson和两个Struts2的JSON插件版本。这使得开发者能够方便地在Java环境中处理JSON数据,构建JSON支持的Web应用,提升应用程序的数据交换...
xwork-2.1.6版本是xwork的一个稳定版本,包含了大量的改进和优化。这个版本修复了一些已知的bug,提升了性能,并引入了新的特性和功能。下面,我们将围绕xwork的核心模块,详细解读其源代码的主要结构和工作流程。 ...
标题中的"jasperreports所有的jar包"指的是JasperReports库的相关组件集合,这是一个用于创建复杂的报表的开源Java库。JasperReports支持多种数据源,包括数据库连接、CSV、XML等,能够生成PDF、HTML、Excel等多种...
2. **环境搭建**: 笔者基于SSI框架(Struts2.1.6 + Spring3.0 + iBatis-2.3.4.726)搭建了学习环境,并按照官方示例进行了环境的配置与测试。 #### 三、配置JMesa环境 1. **文件结构**: - 在`webRoot`目录下创建...