如何修剪struts中的输入字段值?

时间:2008-10-27 15:29:57

标签: struts

我使用Struts v1.3并具有以下输入形式:

在struts-config.xml中:

    <form-bean name="testForm" 
               type="org.apache.struts.validator.DynaValidatorForm">
        <form-property name="displayName" type="java.lang.String" />
    </form-bean>

在validation.xml中:

    <form name="testForm">
        <field property="displayName" depends="required">
            <arg key="input.displayName" />
        </field>
    </form>

如何修剪“displayName”的值?如何修剪表单的所有“java.lang.String”输入字段的值?

4 个答案:

答案 0 :(得分:2)

您可能有权在此刻修剪字符串,请求处理器将输入字段中的数据更新为表单。这没有经过测试,但是当您将setter setDisplayName(String displayName)修改为类似

时会发生什么
public void setDisplayName(String displayName) {
    this.displayName = displayName.trim();
}

这不是一个很好的解决方案,因为它将逻辑迁移到了一个setter。

问候

答案 1 :(得分:1)

如果您想将trim用于验证目的,我认为正确的方法是为需要修剪的必填字段创建和使用您自己的(或扩展现有的)验证器。 例如,您可以使用此页面:http://struts.apache.org/1.2.4/userGuide/dev_validator.html,“Pluggable Validators”部分。

如果要在在业务逻辑中使用它们之前使用trim修剪String值,可以扩展 org.apache.struts.validator.DynaValidatorForm 并覆盖检索值的方法,如 get(String name) getString(String name)等。之后,您将在 form-b​​ean 声明中使用您的类。

答案 2 :(得分:0)

如果您不介意在Form类中使用String操作逻辑,可以在Apache的Commons Lang JAR中尝试StringUtils方法:

StringUtils JavaDoc

这将允许您以多种特定方式修剪字符串,无论您是想要trimToEmpty,trimToNull等。这意味着您可以访问null安全方法,这对某些值很有用。

答案 3 :(得分:-1)

或者尝试在jsp中使用javascript regexp修剪onfocus或onblur

  

&LT; html:text name =“testForm”property =“displayName”onfocus =“javascript:this.value = this.value.replace(/ ^ \ s + | \ s + $ / g,'')”onblur =“javascript:this。 value = this.value.replace(/ ^ \ s + | \ s + $ / g,'')“/&gt;