Struts2之类型转换中的错误

1. 处理类型转换错误

在Web的应用中,表现层主要涉及到数据校验和类型转换,这两个是紧密相关的。在实际中,只有通过了类型转换,下一步才会去实现数据上的校验。那么今天,笔者将向大家介绍关于Struts2的类型转换的应用。主要是通过例子来说明,例子的应用大概是在页面中输入用户名、密码、生日,然后校验通过后才可进入数据校验。

1)        创建一个LoginAction.java,这个Action的类必须继承ActionSupport基类,因为Struts2的ActionSupport负责收集类型转换错误、输入校验,并将它们封装成FieldError对象,添加到ActionContext中。
 

public class LoginAction extends ActionSupport
{
	private User user;
	// user的setter和getter方法
	public void setUser(User user)
	{
		this.user = user;
	}
	public User getUser()
	{
		return user;
	}
	// 没有execute方法,直接使用ActionSupport的execute方法
}

2)        配置struts.xml。要求是在登录时,如果类型校验没有通过的话,那么还是要跳到input.jsp的界面,如果成功,那么就转入welcom.jsp界面。

<!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.custom.i18n.resources" value="mess"/>
	<constant name="struts.i18n.encoding" value="GBK"/>
	<package name="lee" extends="struts-default">
	<!-- 定义处理用户请求的Action -->
		<action name="login" class="org.crazyit.app.action.LoginAction">
			<!-- 配置名为input的逻辑视图,当转换失败后转入该逻辑视图 -->
			<result name="input">/WEB-INF/content/input.jsp</result>
			<!-- 配置名为success的逻辑视图 -->			<result>/WEB-INF/content/welcome.jsp</result> 		<result name="error">/WEB-INF/content/welcome.jsp</result> 
		</action>
	<action name="*">
		<result>/WEB-INF/content/{1}.jsp</result>
		</action>
	</package>
</struts>

3)        创建JSP的视图界面,该界面中需要加入<s:fielderror/>的标签,只有这样才可以输出类型转换的错误信息。下面是input.jsp界面。

<body>
<s:fielderror />
<h2>类型转换的错误处理</h2>
<p><b>请输入用户信息</b></p>
<s:form action="login">
	<s:textfield name="user.name" label="用户名"/>
	<s:textfield name="user.age" label="年龄"/>
	<s:textfield name="user.birth" label="生日"/>
	<tr>
		<td colspan="2"><s:submit value="转换" theme="simple"/>
		<s:reset value="重填" theme="simple"/></td>
	</tr>
</s:form>
</body>

4)        当然还少不了domain的对象User,下面就创建个User.java.

public class User
{
	private String name;
	private Integer age;
	private Date birth;
	// 省略setter和getter方法
	
 
	}

5)        指定在校验某个字段无效时,使用xwork.default.invalid.fieldvalue的消息作为标准的信息提示,注意放在文件的根目录下。同时,在JSP的界面上要加入标签<s:fielderror/>。下面的文件是mess.properties

 xwork.default.invalid.fieldvalue={0}字段无效

6)        在第(5)中是对JSP中的表单中的参数做校验,然后输出对应的表单中name的值错误信息提示。如果要用特定的字段指定特别的信息,即对User类中的birth指定特定的信息提示,那么就要用这个形式:invalid.fieldvalue.<propName>=<tipMsg>。其中propName就是类型转换的属性名,如:user.birth.下面是LoginAction.properties,这个文件应该放在XXAction的同包名下。

invalid.fieldvalue.user.birth=生日信息必须满足yyyy-MM-dd格式
 

7)        最后的页面图。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值