我使用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”输入字段的值?
答案 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-bean 声明中使用您的类。
答案 2 :(得分:0)
如果您不介意在Form类中使用String操作逻辑,可以在Apache的Commons Lang JAR中尝试StringUtils方法:
这将允许您以多种特定方式修剪字符串,无论您是想要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;