struts2类型转换器入门

说明:在页面中输入的都是字符串。而在Java在处理时习惯使用对象。需要将页面的输入的字符串转换成java对象后然后再进行后续的处理。

 

例1:页面上输入的用户信息。用户名和密码使用分号隔开。

 页面内容: user info: hello;world

结果输出为:username: hello   passworld: world

 

a.      登录界面userinfo.jsp

<h1>使用分号将用户名和密码分开</h1>

<formaction="userAction">

       user info :  <inputtype="text"name="user"/><br/>

      <inputtype="submit"value="submit"/>

</form>

b.      定义待转换的bean类User.

classUser{

  //定义属性名

 //定义get(),set()方法。

}

c.       配置文件struts.xml.配置action对应的类

<actionname="userAction"class="com.ebuair.UserAction">

           <resultname="success">/showuserinfo.jsp</result>  

    </action>

d.      新建com.ebuair.UserAction.(继承ActionSupport类)

publicclass UserAction extends ActionSupport{

  private User user;  //注意这里一定不能新建new User()对象

 //生成get(),set()方法

 //重写execute()方法

}

   e.定义类型转换器com.ebuair.converter.UserConverter.

(继承DefaultTyepeConverter)

重写convertValue(Mapcontext,Object value,Class toType)

public classUserConverter extends DefaultTypeCoverter{

 @override

  convertValue(Map context,Object value,ClasstoType){

  if(User.class == toType){//从页面向后台转换}

  else if(String.class = toType){//从后台向页面转换}

 }

}

e.      定义属性文件。规则:必须在action包下。本例为:com.ebuair

文件名为action名-conversion.properties

(这个也是开始学习时最容易出错的地方)

本例为:UserAction-conversion.properties

文件内容 待转换的类对象=类型转换器的所在的包路径

本例为:user= com.ebuair.converter.UserConverter.

类型转换器可以直接继承DefaultTypeConverter类,重写convertValue()方法,可以实现类型转换。还可以直接继承StrutsTypeConverter类,重写convertFromString(Map arg0,String[] arg1,Class args2)和converToString(Map arg0,Object arg1)

StrutsTypeConver对DefaultTypeConverter类的convertValuea()方法进行了封装。

   f.展示页面:showuserinfo.jsp(使用)

<@ taglib prefix=”s” uri=”/struts-tags”>

 <s:property value=”user”/>

 

 

    例2.批量的类型转换。

a. 登录界面userinfos.jsp

<form action=”userActions”>

 user info1: <input type=”text” name=”user”><br>

 user info2: <input type=”text” name=”user”><br>

 ……

 <input type=”submit” value=”submit”>

</form>

b.      配置sruts.xml。配置指定的action

<actionname=”userActions” class=”com.ebuair.UserAcions”>

 <result name=”successs”>/showuserinfos.jsp</result>

                </action>

c.       实现com.ebuair.UserAcions类 (继承ActionSupport类)

publicclass UserActions extends ActionSupport{

  List<User> user //注意不能使用new生成新的对象。

  //生成set(),get()方法

 //重写execute()方法

}

d.      实现类转换器com.ebuair.converter.UserActionsConverter

(继承StrutsTypeConverter)

publicclass UserActionsConverter extends StrutsTypeConverter{

@override

public Object converFromString(Map context, String[]vaules, Class toClass){

//为什么不用判断toClass==User.class

 List<User> users = newArrayList<User>();

 for(){ }

 return users;

@override

publicString convertToString(Map contex,Object o){

List<User> users = (List<User>) o;

 StringBuffer userinfo = new StringBuffer();

 for(User user : users){

 userinfo.append(“username:”).append(username).append(“password”).append(“password”);

}

return userinfo.toString();

}

}

}

e.      配置属性文件。

在和Action类相同的包下定义文件

(本例为在com.ebuair包下新建文件)

文件名称为Action类名-conversion.properties

(本例为UserActions-conversion.propeties)

内容为带转换的类名=类转化器名()

(本例为user=com.ebuair.converter.UserAciontsConverter)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值