Struts2的类型转换的一个例子

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>
 <package name="convertor" extends="struts-default">
  <action name="login" class="com.action.UserAction">
   <result name="success">/result.jsp</result>
  </action>
 </package>
</struts>

login.jsp

...........

<b>用户名和密码以分号隔开</b>
 <form action="login.action" method="post">

 User Info : <input type="text" name="user">
 <input type="submit" value="提交">
 </form>

......................

 

web.xml

 <filter>
        <filter-name>struts2</filter-name>
        <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
    </filter>

    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

 

UserAction.java

public class UserAction extends ActionSupport {

 private User user;

 public User getUser() {
  return user;
 }

 public void setUser(User user) {
  this.user = user;
 }
 @Override
 public String execute() throws Exception {
  return SUCCESS;
 }
}

 

UserActionConvertor.java

@Override
 public Object convertValue(Map context, Object value, Class toType) {
  if(User.class == toType){   //从字符串,转向对象
   
   String [] str = (String[])value;
   String s = str[0];
   StringTokenizer st = new StringTokenizer(s, ";");
   String username = st.nextToken();
   String password = st.nextToken();
   
   User user = new User();
   user.setPassword(password);
   user.setUsername(username);
   
   return user;
   
  }
  else if(String.class == toType){
   User user = (User)value;
   String username = user.getUsername();
   String password = user.getPassword();
   return "username:"+username+"; password:"+password;
  }
  return null;
 }


UserAction-conversion.properties

user=com.action.UserActionConvertor

 

result.jsp

<body>
 username:${requestScope.user.username }<br/>
 password:${requestScope.user.password }<br>

<s:property value="user"/>


  </body>

 

 

 

 

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值