修剪 Struts2 文本字段字符串输入

2024-01-02

修剪该字符串的最佳方法是什么/放置修剪代码的最佳位置在哪里?

假设我的 jsp 中有以下文本字段:

<s:textfield label="First Name" name="person.firstname"/>

动作类:

public class BaseAction extends ActionSupport implements ServletRequestAware, SessionAware {
    private Person person;
    // Getters, setters and action logic
}

豆子:

public class Person implements Serializable {
    private String lastname;
    private String firstname;
    // Getters and setters
}

我可以更改 bean 中的默认设置,但这看起来像是一个 hack:

public void setFirstname(String firstname) {
    this.firstname = firstname.trim();
}

EDIT: 我也看到这个问题了:struts2 修剪从表单获得的所有字符串 https://stackoverflow.com/questions/2499530/struts2-trim-all-string-obtained-from-forms?rq=1一些人还建议“正确”的方法是使用拦截器。

为什么拦截器是“正确”的方式?改变 Bean 的设置器有什么问题吗?


可以用以下方法完成Struts2 转换器 http://struts.apache.org/2.3.4.1/docs/type-conversion.html.

public class TrimmingStringConverter extends StrutsTypeConverter {

    public Object convertFromString(Map ctx, String[] values, Class arg2) {
        if (values != null && values.length > 0) {
            return values[0].trim();
        }

        return null;
    }

    public String convertToString(Map ctx, Object o) {
        if (o != null) {
            return o.toString();
        }
        else {
            return null;
        }
    }

    public Object convertValue(Map context, Object o, Class toClass)
    {
        if (o == null) {
            return null;
        } else if (toClass == java.lang.String.class) {
            if (o instanceof String[]) {
                String[] os = (String[]) o;

                if (os.length > 0) {
                    return os[0].trim();
                }
            }

            return o.toString().trim();
        }

        return super.convertValue(context, o, toClass);
   }
}

它必须在 xwork-conversion.properties 中注册: java.lang.String=es.jogaco.webapp.TrimmingStringConverter

这将应用于all用户输入。

如果您有默认的 struts2 拦截器,它将起作用。引用自struts2文档:

默认情况下,转换拦截器包含在默认堆栈中的struts-default.xml中

另外,我让它在我的 struts2 应用程序中工作。

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

修剪 Struts2 文本字段字符串输入 的相关文章

随机推荐

  • 从 linq 在新对象中创建新属性

    所以我正在执行 linq to sql 查询 结果以 IEnumerable 形式出现 从此列表中 我为返回的每个结果创建一个新对象 我已经使用的存储过程正在按我想要的顺序返回对象 我们有一个排行榜 查询后结果按降序排列 我遇到问题的部分是
  • 如何解决“无法解析:org.webrtc:google-webrtc”?

    我构建了一个 android webrtc 应用程序 但是当将 webrtc 添加到 android studio 项目时 实现 org webrtc google webrtc 1 0 我收到此错误 无法解析 org webrtc goo
  • JSP/Glassfish 的 PHP .htaccess 模拟

    如何限制 JSP Glassfish 中的文件 PDF 访问 以便只能从源代码而不是直接的 url 打开它们 对于 PHP 项目 我使用 htaccess webapp 下的任何内容WEB INF无法通过直接 URL 访问目录 但应用程序代
  • 如何在sql Developer oracle中使用spool命令

    亲爱的 我无法使用 spool 命令 它不起作用或者我没有做正确的事情 我正在尝试将查询结果保存在 txt 文件中 也尝试使用 csv 保存 select csv from table但它也不起作用 所以我写的是 set echo off
  • 从 Hibernate 3 迁移到 4 会减慢启动速度

    我们正在尝试将我们的项目从 hibernate 3 迁移到 hibernate 4 一切工作正常 但问题是启动 我们不使用 JPA 我们直接使用 hibernate 以及 xml 文件和映射文件
  • SVG 渐变不起作用

    我有一个 svg 我需要用渐变填充它 css 是由脚本添加的 如果你使用单一 RGB 颜色 一切都可以正常工作 但使用渐变时 SVG 会产生白色背景 脚本后的结果代码
  • RibbonComboBox 选定的图库项目在鼠标离开时恢复为旧值

    我已将 WPF 功能区替换为最新的库 组合框选择更改会触发数据网格的重新加载 我的 RibbonComboBox 有问题 如果我将鼠标光标移出所选项目 则所选项目将恢复为旧项目 如果我将光标保持在所选项目上直到数据网格重新加载完成 则新值将
  • scala 中什么时候必须使用分号?

    我正在学习如何在 Scala 中编程 并被告知分号在 Scala 中是可选的 因此 考虑到这一点 我尝试使用以下没有分号的嵌套代码块 但是 它会在 Scala REPL 中引发错误 scala gt val a 1 val b a 2 va
  • 在Java中查找字符串中子字符串的第二次出现

    我们得到一个字符串 比如说 itiswhatitis 和一个子串 比如说 is 我需要找到的索引 i 当字符串 is 在原始字符串中第二次出现 String indexOf is 在这种情况下将返回 2 在这种情况下我希望输出为 10 使用
  • 在VB中替换单个字符串中的多个字符

    是否可以在 Visual Basic 中替换字符串中的多个字符 例如 mary had a little lamb 全信a必须改为z all m必须改为y all t必须改为x只需一行代码 结果是Replace是一个字符串 可以连接多个替换
  • 玩2.5,休眠:表未映射

    我在下面遇到了异常 例外是 org hibernate hql internal ast QuerySyntaxException 用户未映射 调用此代码时发生了这种情况 TypedQuery
  • 变量检查,有些不对劲

    我花了一些时间在互联网上搜索此代码的部分来解决它 但是一旦进入我的代码 它似乎不起作用 程序执行到这一步后 无论我输入什么 它都不会显示密码强度 而是显示一个空格 if EnteredPassword isupper or EnteredP
  • 将 nil 赋给 TImage.Picture.Graphic 来清除图片后,如何再次使用它?

    在下面的代码中 我清除了btnSaveClick中的图片 稍后在btnLoadClick中我想将图片分配给图像 但它给出了AV 因为Graphic对象不存在 我怎样才能完成任务 procedure TForm1 btnSaveClick S
  • GCC 4.4:避免在 gcc 中对 switch/case 语句进行范围检查?

    这只是 4 4 之前的 GCC 版本的问题 在 GCC 4 5 中已修复 https gcc gnu org bugzilla show bug cgi id 43462 是否可以告诉编译器 switch 中使用的变量适合提供的 case
  • 如何使用 Material Components Web Foundations

    使用材质组件 我试图弄清楚如何使用组件基础的方法 举个例子 我有 div class mdc linear progress div class mdc linear progress buffering dots div div clas
  • Java - 具有显示箭头的按钮

    我想要一个 Java 中的按钮 它显示箭头 就像键盘上一样 到目前为止我有这个 JButton arrowUp new JButton JButton arrowDown new JButton v JButton arrowLeft ne
  • 如何使用 pandas 查找列的最大值并根据条件按顺序排列它们?

    我有以下数据框 import pandas as pd import numpy as np d ID 1 2 3 4 5 6 Price1 5 9 4 3 9 np nan Price2 9 10 13 14 18 np nan Pric
  • PHP 和 MySQLi - 无法通过[重复]中的引用传递参数 2

    这个问题在这里已经有答案了 我正在尝试创建一个函数来检查更新并插入一些数据 但我在第一步中遇到了问题 其中 stmt gt bind param 表示没有通过引用传递参数或类似的内容 我在下面附上了功能代码 public function
  • 如何使用 grails 中现有的 java 类

    如何从 Grails 应用程序调用驻留在现有 Java 类中的方法 是否有必要 建议将其包装在服务中 将您的源代码放入 src java 中 然后在conf spring resources groovy中 你可以这样做 例如 Place
  • 修剪 Struts2 文本字段字符串输入

    修剪该字符串的最佳方法是什么 放置修剪代码的最佳位置在哪里 假设我的 jsp 中有以下文本字段