Struts转换器和错误提示

来源:互联网 发布:java怎么调用外部接口 编辑:程序博客网 时间:2024/05/29 04:13

转换器相应定义规则

自定义转换器(三种配置方式)

1.全局级别

在classpath下定义xwork-conversion.properties
包名.类名.属性名=自定义转换器类名
java.util.Date=com.mingde.converter.DateTypeConverter

2.Action类级别

在action所在包下定义:action类名-conversion.properties
action属性名(若为对象,则指定该对象属性)= 自定义转换器类名

3.JavaBean级别

在vo所在的包下定义:实体类名-conversion.properties
内容:属性名=自定义转换器类名

转换器出错,解决默认的错误信息

方法一:

在src下定义全局资源文件application.properties
内容为:xwork.default.invalid.fieldavlue="{0}"的值无效
然后在struts.xml文件中配置
<constant name="struts.custom.i18n.resources" value="application"/>
最后在JSP页面中用:
<s:head/><s:fielderror/>//显示错误

方法二

在action所在包下定义文件
如:StudentAction.properties文件
内容:invalid.fieldvalue.student.birthday=无效字段值

方法三

在vo所在包下定义Student.properties文件
内容:invalid.fieldvalue.birthday(属性)=无效字段值

定义转换器

package com.minde.converter;import java.text.DateFormat;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Date;import java.util.Map;import org.apache.struts2.util.StrutsTypeConverter;import com.opensymphony.xwork2.conversion.TypeConversionException;public class DateTypeConverter extends StrutsTypeConverter{//从前台输入的字符串values转换为后台的java对象@Overridepublic Object convertFromString(Map context, String[] values, Class toClass) {DateFormat df = new SimpleDateFormat("yyyy年MM月dd日");//将前台输入的字符串转换为日期try {Date dt = df.parse(values[0]);return dt;} catch (ParseException e) {//System.out.println("对不起,日期格式转换失败!");//当转换异常时,要抛出异常,通知struts2发生了转换异常要进行处理throw new TypeConversionException(e.getMessage()+"[" + values + ",classes:" + toClass+"]");}}//从后台将日期数据转换到前台页面展示@Overridepublic String convertToString(Map context, Object o) {Date dt = (Date)o;DateFormat df = new SimpleDateFormat("yyyy-MM-dd  E");return df.format(dt);}}

Action类

package com.minde.action;import java.util.Date;import java.util.List;import com.opensymphony.xwork2.ActionSupport;@SuppressWarnings("serial")public class StudentAction extends ActionSupport{private Date sdate;public Date getSdate() {return sdate;}public void setSdate(Date sdate) {this.sdate = sdate;}@Overridepublic String execute() throws Exception {return SUCCESS;}

全局转换器定义

规则在classpath(src)下定义名为:xwork-conversion.properties文件(文件名固定)
内容:java.utils.Date=定义转换器的路径
当你使用页面跳转到Action时,因为xwork-conversion.properties文件定义为全局,所以会自动启用他,进行转换器的转换
原理:先将页面上传的java对象进入转换器,由转换器进行convertFromString()方法后再返回给Action类,所以返回的类型要与Action上定义的类型一致,当Action类处理完后,再此进入转换器convertToString()方法进行转换,返回值是String型,再返回到结果页面显示

局部转换器

Action包类定义
如Action类名:StudentAction
那么进入转换器的文件名为:StudentAction-conversion.properties
文件内容:Action类里面定义的属性=转换器路径

VO包里定义

如果实体类名为Student
那么进入转换器的文件名为:Student-conversion.properties
内容:属性名=自定义转换器类名(路径)

转换出现错误的提示信息

第一种方式:全局错误信息资源提示文件定义

1.错误信息资源文件的定义
在src下定义application.properties
2.错误信息资源文件的内容
xwork.default.invalid.fieldvalue=要提示的错误信息{0}
3.在struts.xml定义全局错误信息资料文件
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN""http://struts.apache.org/dtds/struts-2.3.dtd"><struts><constant name="struts.devMode" value="true"></constant><constant name="struts.enable.DynamicMethodInvocation" value="true"></constant><!-- 定义全局错误信息文件 --><constant name="struts.custom.i18n.resources" value="application"></constant><package name="" extends="struts-default"><action name="holle" class="com.mingde.action.HelloAction"><result>success.jsp</result><result name="input">Hello.jsp</result> <!-- 出现错误跳转的页面 --></action></package></struts>

5.Action类要继承ActionSupport
6.JSP页面
<body><!-- 定义当出错返回该页面是出现错误提示 --><s:head/><s:fielderror/><form action="holle" method="post">请输入时间<input name="date"><input type="submit" value="提交"></form></body>


第二种方式:(Action)局部资源提示定义

1资源文件的定义

如果要对某个Action类中定义错误信息的话,如:StudentAction,那么定义的错误提示文件名应为StudentAction.properties

2.资源文件StudentAction.properties的内容:

invalid.fieldvalue.sdate=要提示的错误信息{0}
invalid.fieldvalue.Action类中每个会出错的属性名=要提示的错误信息{0}

3.在struts.xml定义出错要跳转的input界面,局部错误提示资源不用在struts.xml配置路径,可以直接使用

4.Action类要继承ActionSupport

5.JSP页面使用标签展示错误:

<!-- 定义当出错返回该页面是出现错误提示 --><s:head/><s:fielderror/>

第三种方式:VO包里定义错误资源提示文件

如:实体类为Student
在vo所在包下定义Student.properties文件
内容:invalid.fieldvalue.属性=无效字段值












原创粉丝点击