如下指定arg1元素可以为field正确配置mask:
<arg1 name=”mask” key="${var:mask}" resource="false" >
<var>
<var-name>mask</var-name>
<var-value>^0\d*$</var-value>
</var>
然而,好多人将上面语句<arg1 name=”mask” key="${var:mask}" resource="false" 去掉
后却为什么可以达到一样的目的?花了一下午翻阅jdk,javaeye上搜索,竟然没有查找一
篇文章明确说明这个问题的,难道是约定俗成的,还是什么缘故?
最后还是通过查阅源代码,得到了比文字更有说服力的结果:
<validator name="mask"
classname="org.apache.struts.validator.FieldChecks"
method="validateMask"
..................
public static boolean validateMask(Object bean, ValidatorAction va, Field field,
ActionMessages errors, Validator validator, HttpServletRequest request)
{
String value;
value = null;
value = evaluateBean(bean, field);
String mask =
Resources.getVarValue("mask", field, validator, request, true); if(value != null && value.length() > 0 && !GenericValidator.matchRegexp(value,
mask))
{
errors.add(field.getKey(), Resources.getActionMessage(validator, request, va,
field));
return false;
}
try
{
return true;
}
..................
public static String getVarValue(String varName, Field field, Validator validator,
HttpServletRequest request, boolean required)
{
Var var = field.getVar(varName); if(var == null)
{
String msg = sysmsgs.getMessage("variable.missing", varName);
if(required)
throw new IllegalArgumentException(msg);
if(log.isDebugEnabled())
log.debug(field.getProperty() + ": " + msg);
return null;
} else
{
ServletContext application = (ServletContext)validator.getParameterValue
(SERVLET_CONTEXT_PARAM);
return getVarValue(var, application, request, required);
}
.........................
public static String getVarValue(Var var, ServletContext application,
HttpServletRequest request, boolean required)
{
String varName = var.getName();
String varValue = var.getValue();
if(!var.isResource())
return varValue; String bundle = var.getBundle();
MessageResources messages = getMessageResources(application, request,
bundle);
Locale locale = RequestUtils.getUserLocale(request, null);
String value = messages.getMessage(locale, varValue, null);
if(value == null && required)
throw new IllegalArgumentException(sysmsgs.getMessage
("variable.resource.notfound", varName, varValue, bundle));
if(log.isDebugEnabled())
log.debug("Var=[" + varName + "], " + "bundle=[" + bundle + "], " + "key=["
+ varValue + "], " + "value=[" + value + "]");
return value;
.......................
public Field()
{
property = null;
indexedProperty = null;
indexedListProperty = null;
key = null;
depends = null;
page = 0;
fieldOrder = 0;
dependencyList = Collections.synchronizedList(new ArrayList());
hVars = new FastHashMap(); hMsgs = new FastHashMap();
args = new Map[0];
.........................
public void addVar(Var v)
{
hVars.put(v.getName(), v); }
public Var getVar(String mainKey)
{
return (Var)hVars.get(mainKey); }
public String getVarValue(String mainKey)
{
String value = null;
Object o = hVars.get(mainKey);
if(o != null && (o instanceof Var))
{
Var v = (Var)o;
value = v.getValue();
}
return value; }
protected String property;
protected String indexedProperty;
protected String indexedListProperty;
protected String key;
protected String depends;
...........................
分享到:
相关推荐
2. 删除ActionForm中的validate方法,因为验证框架会自动处理验证逻辑。 **配置Struts** 1. 在`struts-config.xml`中的`<action>`标签中添加`validate="true"`属性,以启用验证,并指定错误发生时的转发地址。 2. ...
### Struts Validator 验证器使用指南 #### 一、Struts Validator 概览 **Struts Validator** 是一个强大的框架,用于简化Web应用程序中的表单验证过程。它首次出现在Struts 0.5版本中,并逐渐发展成为Struts 1.1...
Struts Validator是一个强大的工具,用于在Struts框架中执行客户端和服务器端的数据验证。这个验证器自Struts 1.1版本开始成为其核心组成部分,极大地增强了应用的健壮性和用户体验。以下是对Struts Validator使用的...
Struts自动验证框架是Java Web开发中用于处理用户输入验证的一种高效工具,它极大地简化了在Struts应用程序中实现表单验证的过程。该框架通过XML配置文件定义验证规则,避免了编写大量的Java代码来实现验证逻辑,...
本文将通过一个具体的示例详细介绍如何在Struts 1.2 应用程序中配置和使用验证框架。 #### 示例分析 本示例主要介绍了如何在Struts 1.2应用中设置验证规则,并展示了如何通过资源文件、配置文件等来进行配置,以...
在深入探讨Struts框架中的`struts-validate`概念前,我们先来理解一下Struts框架本身。Struts是一个开源的MVC(Model-View-Controller)框架,用于简化Java Web应用程序的开发。它提供了一种结构化的方法来构建Web...
Validator框架作为Struts的一个重要扩展,主要用于数据验证。它可以显著提高开发效率并减少代码量。通过使用此框架,开发者无需在`ActionForm`类中实现`validate()`方法来进行表单验证,而是通过配置XML文件来实现...
举例来说,在Struts登录示例中,`validator-rules.xml`文件中`required`验证部分的代码定义了一个验证器,它会在表单提交时检查字段是否为空。如果字段为空,就会触发错误消息,该消息的标识符是`errors.required`,...
Struts框架提供了强大的表单验证功能,支持客户端和服务器端两种验证方式。 #### 三、Struts表单验证配置示例解析 根据给定的文件内容,我们可以深入分析Struts表单验证的具体配置方法。 ##### 3.1 配置Struts...
动态表单(form)编写在Web开发中是一种常见且重要的技术,尤其在使用Struts框架时。根据提供的文件信息,我们可以深入探讨动态表单在Struts框架中的实现方式及其与DynaActionForm和DynaValidatorForm类的关系。 ### ...
Apache Shale是一个扩展JavaServer Faces (JSF)的框架,它提供了额外的功能,如视图控制器、对话管理、验证、远程处理、Spring集成、可重用视图和测试框架等。在JSF中,默认并不包含客户端验证机制,但Shale通过集成...