文档章节

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
Stripes tips(1)-Stripes简介

初识 Stripes 和我们熟悉 Struts 1 和 Struts 2 类似,Stripes 同样是一种展示层框架,用于快速构建web程序。在使用Struts 1,WebWork 和 Struts 2 等框架的时候,通常需要大量额外的 XML 配...

晨曦之光
2012/03/09
0
0
尚硅谷公开课--struts2--2--搭建struts2环境以及struts2简单例子

一、搭建struts环境 1、在eclipse中新建一个java web项目 2、复制jar包 在下载的struts2中,有一个apps文件夹,这个文件夹下的.war文件即是官方给出的例子,其中struts2-blank.war是一个空的...

小代码2016
2015/08/07
0
0

没有更多内容

加载失败,请刷新页面

加载更多

java -jar运行内存设置

java -Xms64m #JVM启动时的初始堆大小 -Xmx128m #最大堆大小 -Xmn64m #年轻代的大小,其余的空间是老年代 -XX:MaxMetaspaceSize=128m # -XX:CompressedClassSpaceSize=6...

李玉长
6分钟前
0
0
Spring | 手把手教你SSM最优雅的整合方式

HEY 本节主要内容为:基于Spring从0到1搭建一个web工程,适合初学者,Java初级开发者。欢迎与我交流。 MODULE 新建一个Maven工程。 不论你是什么工具,选这个就可以了,然后next,直至finis...

冯文议
28分钟前
0
0
RxJS的另外四种实现方式(四)——性能最高的库(续)

接上一篇RxJS的另外四种实现方式(三)——性能最高的库 上一篇文章我展示了这个最高性能库的实现方法。下面我介绍一下这个性能提升的秘密。 首先,为了弄清楚Most库究竟为何如此快,我必须借...

一个灰
今天
1
0
麒麟AI首席科学家现世

8月31日,华为发布了新一代顶级人工智能手机芯片麒麟980,成为全球首款7nm工艺手机芯片,AI方面也实现飞跃,支持人脸识别、物体识别、物体检测、图像分割、智能翻译等。 虽然如今人人都在热议...

问题终结者
昨天
1
0
告警系统主脚本、告警系统配置文件、告警系统监控项目

告警系统主脚本 main.sh内容 #!/bin/bash#Written by aming.# 是否发送邮件的开关export send=1# 过滤ip地址export addr=`/sbin/ifconfig |grep -A1 "ens33: "|awk '/inet/ {pr...

芬野de博客
昨天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部