1.XXX-validation.xml文件需要放在XXX类的同一个包里面,一般的IDE都会将他们最终放在同一个文件夹里面的。
2.struts2.1.8的validate不需要额外下一个common-validation.jar,这个功能已经内置了。
3.类型转换异常:
ognl.MethodFailedException,通常是如下的情况:
ognl.MethodFailedException: Method "setAge" failed for object test4.TestAction@156d7c8 [java.lang.NoSuchMethodException
通常是因为前端的表单输入了一个非法字符。
出现这种异常我们通常是要到前台的表单里面显示一下了,那么该如何配置呢?
Struts2的机制是如果是出现这种异常的话,Action返回的是一个input,只有配置result值为input的页面就可以了。我们是要跳到前台的当前页面来,可以配置如下:
<action name="TestAction" class="test4.TestAction">
<result name="error">/test4/error.jsp</result>
<result name="input">/index.jsp</result>
<result name="success">/test4/create.jsp</result>
</action>
这里的index.jsp是我自己的表单页面。
然后这里不得不提的是这里存在一个令人很不爽的地方。通常我们要完成增删查改的操作,一般会有两个页面涉及到表单的输入:创建的页面和更新的页面。那现在一旦出错了,只有一个input返回,我该如何配置跳转到两个页面呢?
其实也有解决方案,就是所有的出错信息统一用一个页面来处理,这样就避免了上面的尴尬。不过老是要跳到另外一个页面感觉也不是很好,期待高手的指导。
4.如果不是使用struts2自带的标签库的话,是无法输出出错的信息的。这也是一件很无奈的事情。看什么时候可以研究Ajax+struts2.
5.如何不让控制台输出OGNL转型的错误?
网上的说法是通过更改log4j的配置文件,配置为当抛出的error时才输出。如下:
解决方法:
在log4j.properties
文件中加入:
log4j.logger.com.opensymphony.xwork2=ERROR
|
一开始我的测试是失败的,原因是没有添加log4j-XXX.jar文件,然后log4j.properties也没有写对。参考struts2官方的showcase,配置文件如下:
# Set root logger level to WARN and append to stdout
log4j.rootLogger=WARN, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
# Pattern to output the caller's file name and line number.
log4j.appender.stdout.layout.ConversionPattern=%d %5p (%c:%L) - %m%n
# Print only messages of level ERROR or above in the package noModule.
log4j.logger.noModule=FATAL
# OpenSymphony Stuff
log4j.logger.com.opensymphony=INFO
log4j.logger.org.apache.struts2=DEBUG
log4j.logger.com.opensymphony.xwork2=ERROR
然后世界终于清净了。。。
6.如何让输出的错误信息中文化
转型失败的输出信息是英文的:
Invalid field value for
field "age".
age是我表单的字段名称
方法同样来自网上,感谢伟大的Internet上面的所有开发者。
在Action对应的包里面新建一个Action名字.properties文件
如:下面的TestAction对应的TestAction.properties
里面写如下的内容:
invalid.fieldvalue.age=必须是数字类型
|
这里的age是TestAction的一个属性。然后用jdk的转码工具将中文转码。可以参考以下的链接:
http://xiehx163.blog.163.com/blog/static/61466796200922301110551/
下面是整个项目的结构图:
src--|
struts.xml
log4j.properties
test----|
TestAction.java
TestAction.properties
TestAction-validation.xml
package.properties
文档解析:
log4j.properties:控制控制台输出的
TestAction:Action:处理业务流程
TestAction.properties:国际化输出转型错误这里是中文
package.properties:国际化输出
TestAction-validation.xml:配置字段校验
log4j.properties:
# Set root logger level to WARN and append to stdout
log4j.rootLogger=WARN, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
# Pattern to output the caller's file name and line number.
log4j.appender.stdout.layout.ConversionPattern=%d %5p (%c:%L) - %m%n
# Print only messages of level ERROR or above in the package noModule.
log4j.logger.noModule=FATAL
# OpenSymphony Stuff
log4j.logger.com.opensymphony=INFO
log4j.logger.org.apache.struts2=DEBUG
log4j.logger.com.opensymphony.xwork2=ERROR
TestAction.java:
public class TestAction extends ActionSupport{
private static final long serialVersionUID = -7505437345373234225L;
String name;
int age;
String answer;
//set和get方法
…
}
TestAction.properties:
#国际化输出系统里面的转型错误
invalid.fieldvalue.age=必须是数字类型
package.properties:
#国际化
required = ${getText(fieldName)} 是必填项.
number = ${getText(fieldName)}的长度必须大于13小于19
TestAction-validation.xml:
<!DOCTYPE validators PUBLIC
"-//OpenSymphony Group//XWork Validator 1.0.2//EN"
"http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
<validators>
<field name="name">
<field-validator type="requiredstring">
<message key="required"></message>
</field-validator>
</field>
<field name="age">
<field-validator type="int">
<param name="min">13</param>
<param name="max">19</param>
<message key="number"></message>
</field-validator>
</field>
</validators>
前台的表单:
<s:form method="post" action="TestAction" namespace="/test4">
<s:textfield label="Name" name="name"/>
<s:textfield label="Age" name="age"/>
<s:textfield label="Favorite color" name="answer"/>
<s:submit/>
</s:form>
- 大小: 4.7 KB
分享到:
相关推荐
Struts2作为一款流行的Java Web框架,其在处理用户输入数据时扮演着重要角色。...在练习中,你可以尝试创建不同的自定义转换器,并理解它们在处理不同类型数据时的作用,从而加深对Struts2数据处理机制的理解。
通过分析这些文件,你可以更深入地了解Struts2如何处理请求,执行类型转换,应用拦截器以及进行数据校验。 总结来说,Struts2的类型转换、拦截器和校验机制是构建健壮、可维护的Java web应用程序的重要工具。理解并...
3. **转换异常**:当类型转换失败时,Struts2会抛出`ConversionException`,并根据配置决定如何处理这个异常,如显示错误消息,或者重定向到特定页面。 **数据校验(Data Validation)** 数据校验则是在类型转换后...
它简化了Web应用的开发过程,提供了表单处理、错误处理和业务逻辑封装等功能。 2. **Spring框架**:Spring是一个轻量级的控制反转(IoC)和面向切面编程(AOP)容器,它管理对象的生命周期和配置,同时提供数据访问...
- 使用`native2ascii`工具将中文资源文件转换为GBK编码,以避免乱码问题。 - 设置Eclipse的编码格式为GBK,确保编辑过程中不出现乱码。 #### 总结 通过以上步骤,我们不仅实现了Struts、Spring 和 Hibernate 的...
总的来说,这个压缩包提供了一个全面的学习资源,涵盖了Struts2框架中的关键功能:数据校验、前端和后端校验策略、国际化处理以及错误信息的样式定制。通过深入研究这些文档和示例,开发者可以有效地提升其在Struts2...
Struts 作为 MVC 模式中的控制器部分,负责处理用户请求并将数据发送到视图;Spring 作为一个轻量级的容器,主要用来管理应用对象的生命周期和依赖关系;而 Hibernate 是一个全功能的对象关系映射(ORM)解决方案,...
由于在Tomcat发布后可能出现乱码问题,作者创建了一个批处理文件`properties2GBK.bat`,可能用到了`native2ascii`工具来将非ASCII字符转换为适合Java的字节表示,以解决中文乱码问题。 总结来说,这个开发实例展示...
在Struts2和Spring中,可以通过Action或Controller将Java对象转换为JSON,然后返回给Ext前端进行渲染。 在"Struts2+Spring2.5+jdbc+Ext+json实例的lib包"中,可能包含了上述技术的相应库文件,如Struts2的struts2-...
- 动作拦截器:Struts2使用拦截器处理请求,拦截器链允许自定义业务逻辑和验证规则。 - 表单验证:通过Validation.xml和ActionForm类实现客户端和服务器端验证。 - 结果映射:定义了Action执行后的跳转路径,可以...
这样,当Struts2处理表单提交时,就会自动调用这个转换器来转换用户输入。 验证框架是Struts2中的另一大亮点,它提供了一种有效的方式来检查用户输入的合法性,防止非法数据进入系统。Struts2支持两种验证方式:...
10. **类型转换**:Struts2提供了类型转换机制,自动将请求参数转换为Action类的属性类型,简化开发工作。 在使用Struts2全部jar包时,开发者需要将这些库文件加入到项目的类路径中,通常包括Struts2的核心库、依赖...
2. **异常处理与错误封装**:如果类型转换过程中遇到问题,如无法正确转换数据类型,会抛出异常。这些异常会被捕获并封装到`fieldError`对象中,存储在`ActionContext`中,以便后续的拦截器处理。 3. **反射调用...
在处理用户表单提交的数据时,Struts2提供了一套完善的转换器(Converter)和验证(Validation)框架,使得类型转换和数据验证变得更加便捷和高效。 ### 1. Struts2 内置转换器 Struts2 自带了一系列内置转换器,...
它在Java社区中广泛使用,因为它提供了强大的动作调度、类型转换、异常处理和丰富的插件支持。在这个"Strut2 + il8n + validation 源码完整版"项目中,我们看到开发者已经整合了Struts2框架与国际化(i18n)和验证功能...
Struts2自动将请求参数转化为Action属性的类型,但也可以自定义类型转换器以处理特殊的数据格式。 9. **Struts2的安全问题**: 虽然Struts2强大且灵活,但也曾曝出过安全漏洞,如S2-005、S2-016等。开发者应当...
Struts2的Validation框架使用XML或注解进行字段验证规则的定义,并能方便地处理验证错误。 **五、国际化** Struts2支持多语言环境,通过资源包(Properties文件)实现国际化。开发者可以创建不同的资源包文件,每...
在Struts2中,验证框架是处理用户输入验证的关键部分,它确保了从客户端接收到的数据的质量和准确性。本示例将深入探讨Struts2验证框架的基本用法,特别适合初学者理解和掌握。 ### 一、Struts2验证框架概述 ...
1. 类型转换器:Struts2将接收到的字符串参数转换为相应的数据类型,并将这些值赋给Action的属性。如果在此过程中发生异常,异常信息会被保存并由`conversionError`拦截器处理。 2. 客户端校验:Struts2支持在...
Struts2支持两种主要的验证方式:基于注解的验证(Annotation-based validation)和基于XML的验证(XML-based validation)。这两种方式都可以在Action类或者单独的Validator XML文件中定义验证规则。 1. **基于...