struts2 修剪从表单获得的所有字符串

2024-01-26

我使用struts2开发Web应用程序。我想改进从表单中获取字符串的方法。为此,需要修剪所有字符串,如果获得的字符串为空,则设置null到字段。

为此,我创建了字符串转换器.

public class StringConverter extends StrutsTypeConverter {

    @Override
    public Object convertFromString(Map context, String[] strings, Class toClass) {
       if (strings == null || strings.length == 0) {
          return null;
       }

       String result = strings[0];
       if (result == null) {
          return null;
       }

       result = result.trim();
       if (result.isEmpty()) {
          return null;
       }
       return result;
    }

    @Override
    public String convertToString(Map context, Object object) {
       if (object != null && object instanceof String) {
          return object.toString();
       }
       return null;
    }
}

接下来,我将行添加到 xwork-conversion.properties

java.lang.String=com.mypackage.StringConverter

就这样。但我没有得到想要的结果。


在jsp构建表单时调用convertToString()方法,但不调用convertFromString()。

我做错了什么?我怎样才能用另一种方式获得相同的行为?

请不要提供以下解决方案:

  1. 使用 javascript 删除此类表单元素的值。
  2. 创建 util 方法,使其使用反射。然后为每个表单 bean 调用它。

提前致谢, 阿列克谢.


您将在 StrutsTypeConverter 类的代码中找到答案。基本上,在这个级别上,类型转换器框架的作用是not知道数据是“来自”还是“到达”用户,它只知道它正在从一种类型(字符串)转换为另一种类型(也是字符串)。由于它首先检查“to”类型,所以它会always调用convertToString。

长话短说,Struts 的当前版本(我正在使用 2.1.x)不也不支持字符串到字符串类型转换器。因为毕竟他们是type您可能可以说这是设计使然。

我也在寻找一种方法来实现类似的结果,但还没有找到真正好的解决方案。也许最“正确”的方法是编写一个拦截器(正如@leonbloy提到的)。有多种方法可以解决此问题,最简单的方法是在操作上设置所有请求参数之前(即在“params”拦截器执行之前)修剪所有请求参数。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

struts2 修剪从表单获得的所有字符串 的相关文章

随机推荐