0 0

那个啥,这是不是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个答案 按时间排序 按投票排序

0 0

引用

我这里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
0 0

IntegerRangeFieldValidator 明显是对Integer对象的
DoubleRangeFieldValidator 明显是对Double对象的

不能说你声明property是String,但是内容是"1234"就能用Integer的处理。

xwork是为了方便,提供了在property声明为Integer时,自动将参数
从String转换到Integer的功能。
没提供你类型定义是String,根据内容来自动决定 用什么类型比较的功能。

2009年8月22日 15:42
0 0

如果,实际类型你要保存的类型是String
但是仅仅是说其代表的值是数据,要限制大小。
那当然不能直接用数字的RangeValidate了。

为啥不能用Integer?
你声明属性为String,然后用数字的validate……

2009年8月22日 15:38
0 0

不知道LZ为啥不把Action的属性定义为Integer类型?

2009年8月21日 08:40
0 0

同意 lovewhzlq 的回答

具体的是这样的 String

public final class String
    implements java.io.Serializable, Comparable<String>, CharSequence

2009年8月20日 16:35
0 0

它们都实现了Comparable接口,当然就这么判断

2009年8月20日 10:11
0 0

这个貌似不是xwork问题。
应该你的action 的属性填充的配置没配好属性。
另外,最好不要用int直接声明属性,用Integer
基本类型不能正确启动自动转换机制。

2009年8月20日 09:54

相关推荐

    struts2.1.6架包

    Struts2.1.6是Apache Struts框架的一个版本,这是一个流行且强大的Java Web应用程序开发框架,用于构建和维护可扩展、易于维护的MVC(Model-View-Controller)架构的应用程序。Struts2框架提供了丰富的特性,如动作...

    struts2-dojo-plugin-2.1.6.jar 解决了datetimepicker显示月份乱码的问题

    struts2-dojo-plugin-2.1.6.jar 解决了datetimepicker显示月份乱码的问题,显示9、10、11、12月份时出现乱码,本包修改了该bug

    xwork 2.1.6

    XWork 2.1.6 版本是这个框架的一个稳定版本,提供了一些改进和修复了已知问题,以提高应用性能和稳定性。 ### XWork 框架概述 XWork 提供了一种灵活的机制来定义和执行业务操作,它的核心特性包括: 1. **Action...

    Struts2中文乱码问题最终解决方案

    但在Struts 2.1.6版本中,这个配置对POST请求的中文乱码问题无效,这是一个已知的bug。升级到2.1.8.1或更高版本可以修复这个问题,因为官方已经改进了过滤器处理字符编码的方式。 2. **POST乱码问题**: POST请求...

    struts1.x&2_lib文件

    Struts2.1.6是Struts2的一个具体版本,发布于2009年。在这个版本中,可能包含了对之前版本的bug修复、性能优化以及新的特性和改进。例如,它可能提供了更多的拦截器、新的插件支持,或者增强了安全性和稳定性。使用...

    json资源jsonplugin-0.33,2.1.8,2.1.6

    总的来说,这个压缩包提供了处理JSON数据所需的关键组件,包括一个通用的JSON库Gson和两个Struts2的JSON插件版本。这使得开发者能够方便地在Java环境中处理JSON数据,构建JSON支持的Web应用,提升应用程序的数据交换...

    xwork 源代码

    xwork-2.1.6版本是xwork的一个稳定版本,包含了大量的改进和优化。这个版本修复了一些已知的bug,提升了性能,并引入了新的特性和功能。下面,我们将围绕xwork的核心模块,详细解读其源代码的主要结构和工作流程。 ...

    jasperreports所有的jar包

    标题中的"jasperreports所有的jar包"指的是JasperReports库的相关组件集合,这是一个用于创建复杂的报表的开源Java库。JasperReports支持多种数据源,包括数据库连接、CSV、XML等,能够生成PDF、HTML、Excel等多种...

    jmesa学习笔记。。。

    2. **环境搭建**: 笔者基于SSI框架(Struts2.1.6 + Spring3.0 + iBatis-2.3.4.726)搭建了学习环境,并按照官方示例进行了环境的配置与测试。 #### 三、配置JMesa环境 1. **文件结构**: - 在`webRoot`目录下创建...

Global site tag (gtag.js) - Google Analytics