文档章节

Java Web(9)struts 2 validation result设置

Jagery
 Jagery
发布于 2015/12/30 17:01
字数 291
阅读 17
收藏 2

1. 使用action.validate后,如果有addFieldError后,struts会自动返回一个result为“input”,在官方的文档中是这样子的解释的Validation

Validation also depends on both the validation and workflow interceptors (both are included in the default interceptor stack). The validation interceptor does the validation itself and creates a list of field-specific errors. Theworkflow interceptor checks for the presence of validation errors: if any are found, it returns the "input" result (by default), taking the user back to the form which contained the validation errors.


2. 如果想设定另外一个resultName的话,可我们可以看一下struts是如何设定的,其中执行这一部分功能的拦截器是 DefaultWorkflowInterceptor 其中关键代码如下

protected String doIntercept(ActionInvocation invocation) throws Exception {
	Object action = invocation.getAction();
	if (action instanceof ValidationAware) {
		ValidationAware validationAwareAction = (ValidationAware) action;
		if (validationAwareAction.hasErrors()) {
			if (LOG.isDebugEnabled()) {
				LOG.debug("Errors on action " + validationAwareAction + ", returning result name 'input'");
			}
			String resultName = inputResultName;
			//如何校验的当前action有实现这个类,
			//则可以使用其接口的方法getInputResultName()来返回指定的resultName
			if (action instanceof ValidationWorkflowAware) {
				resultName = ((ValidationWorkflowAware) action).getInputResultName();
			}
			//使用注解来指定
			InputConfig annotation = action.getClass().getMethod(invocation.getProxy().getMethod(), EMPTY_CLASS_ARRAY).getAnnotation(InputConfig.class);
			if (annotation != null) {
				if (!annotation.methodName().equals("")) {
					Method method = action.getClass().getMethod(annotation.methodName());
					resultName = (String) method.invoke(action);
				} else {
					resultName = annotation.resultName();
				}
			}
			return resultName;
		}
	}
	return invocation.invoke();
}

© 著作权归作者所有

共有 人打赏支持
Jagery
粉丝 3
博文 23
码字总数 11583
作品 0
玉林
程序员
私信 提问
MVC 框架 - Apache Struts

Struts 是 Apache软件基金会(ASF)赞助的一个开源项目。它最初是 Jakarta项目中的一个子项目,并在2004年3月成为ASF的顶级项目。它通过采用 Java Servlet/JSP 技术,实现了基于Java EE Web...

匿名
2008/09/07
0
8
MyEclipse7.5+JDK1.6+Tomcat6+Struts1.3+MySQL4.1开发演示

一、开发环境配置 MyEclipse7.5下载地址:http://www.verycd.com/topics/2753680/ JDK、Tomcat6和MySQL网上有很多提供下载链接;必须保证MyEclipse和Tomcat版本号如题,否则可能类库缺失造成...

Mr.X
2010/08/28
0
0
struts2.3.1实现登陆

准备阶段 首要做的: lib包中需要导入的struts的9个架包 commons-fileupload-1.2.2.jar commons-io-2.0.1.jar commons-lang-2.5.jar commons-logging-1.1.1.jar freemarker-2.3.16.jar javas......

李红昆
2012/01/02
0
0
java 上传word2007办公文件 struts配置

java 上传word2007办公文件需要 struts配置 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http:/......

程序员小贝
2012/11/23
0
0
Maven3+Struts2.3.1.2整合的Hello World例子

这个例子讲解的是Struts2的Hello 例子。 本文的整合的环境是: 1.Maven 3 2.Eclipse 3.7 3.Struts 2.3.1.2 1.项目结构图: 本文的最终结构图如下所示,防止你跟不上后面的步骤 2.添加Struts2...

爱吃猫的小萌鱼
2014/01/12
0
0

没有更多内容

加载失败,请刷新页面

加载更多

手写一个重试机制程序(使用Callable)

java.util.concurrent.Callable<V>接口可以实现多线程,同时还能实现一个简易重试机制。 查看Callable接口源码可知,它内部的call()方法带返回值,同时抛出了异常。 public interface Cal...

哥本哈根的小哥
20分钟前
0
0
能否通过反射修改被 final 修饰的成员变量?

一、背景 日常磨刀 二、阅前须知知识点: 当final修饰的成员变量在定义的时候初始化值,反射就不能动态修改它的值了。 当final修饰的成员变量在定义的时候没有初始化值,就还能通过反射来动态...

jack__0023
38分钟前
0
0
方之熙博士被任命为RISC-V基金会中国顾问委员会主席,加速RISC-V ISA在中国的应用

中国顾问委员会将就RISC-V基金会的教育和应用推广战略提供指导 今天在中国乌镇举行的世界互联网大会(World Internet Conference)上,RISC-V基金会(RISC-V Foundation)宣布,半导体行业资深人...

whoisliang
52分钟前
1
0
为了用户体验,不要做浏览器兼容

读者看到这篇文章的标题也许会感到奇怪,按照通常的经验来说,为了用户体验应该做浏览器兼容,以便让不同的浏览器用户都能有好的体验,从而增加网站的流量,但是我认为做浏览器兼容属于同样的...

Bob2100
52分钟前
1
0
分布式定时任务架构 (二) xxl-job二次开发实践

4个月前,公司有任务调度的需求,需要一周内完成,时间非常紧。 需求有三点: web界面编辑cron表达式,启动,停止任务 接入公司的rpc成本较低,公司有自研的rpc,研发人员希望共用同一套注解 ...

勇哥和你一起学技术
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部