【Struts2九】类型转换器

思想:页面上name属性的值和action中属性的名称一致,类型是不一样,转化器的目的就是把页面上的字符串转化成action中需要的。比如将checkbox的值转换为list;将一个字符串转换为一个bean!

转化器的步骤:  
  1、在action中的属性中,出现要最终转化后的类型,属性的名要和jsp页面的name属性相同!
  2、写一个转化类 继承了StrutsTypeConverter
           //把页面上传递过来的数据转化成需要的数据类型
           //values为要转化的值,返回值为最终的类型
           public Object convertFromString(Map context, String[] values, Class toClass) {
                //写转化逻辑
           }
  3、在classpath根目录(src根目录)下创建一个文件,该文件的名字是固定的xwork-conversion.properties
        key值为最终要转化成的类型,value值为转化器


例子一:将一个字符串转换为bean:
(1).jsp页面提供输入表单:
<%@  page language="java" import= "java.util.*" pageEncoding="UTF-8" %>
<%@  taglib uri="/struts-tags" prefix= "s"%>
<! DOCTYPE  HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
< html >
   <body >
            <s:form action="../converterAction_showUser.action" >
              用户名和密码:  <s:textfield name="user" ></s:textfield>
                <s:submit></ s:submit>
            </s:form>
   </body >
</ html >

(2).Action中User  bean属性user:(需要提供get/set方法)
public  class ConverterAction extends ActionSupport{
      private  User user;
     
      public  User getUser() {
            return user ;
     }

      public  void setUser(User user) {
            this.user = user;
     }
     
      public  String showUser(){
          System.  out.println(this .user .getPassword());
          System.  out.println(this .user .getUsername());
            return "" ;
     }

}

(3).UserConverter:实现将字符串转换为user对象的逻辑!
public  class UserConverter extends StrutsTypeConverter{

      /**
      * 从页面到action
      */
      @Override
      public  Object convertFromString( Map context, String[] values, Class toClass) {
          String[] ss = values[0].split(  ",");
          User user =  new User();
          user.setPassword(ss[1]);
          user.setUsername(ss[0]);
            return user;
     }

      /**
      * 从action到页面
      */
      @Override
      public  String convertToString( Map context, Object o) {
            return null ;
     }
}

(4).配置文件配置要转换的类型与转换器的对应关系:
xwork-conversion.properties:
cn.itheima03.struts2.bean.User=  cn.itheima03.struts2.converter.action.UserConverter

例子二:将checkbox提交的多个数据转换为list!
(1).jsp:
<%@  page language="java" import= "java.util.*" pageEncoding="UTF-8" %>
<%@  taglib uri="/struts-tags" prefix= "s"%>
<! DOCTYPE  HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
< html >
   <body >
            <s:form action="../converterAction_aihaoss.action" >
                <s:checkboxlist list="{'aa','bb','cc','dd'}" name="aihaos" ></s:checkboxlist>
                <s:submit></ s:submit>
            </s:form>
   </body >
</ html >

(2)Action:注意name属性和Action中的field保持一致!
public  class ConverterAction extends ActionSupport{
  
      private  List<String> aihaos;

      public  List<String> getAihaos() {
            return aihaos ;
     }

      public  void setAihaos(List<String> aihaos) {
            this.aihaos = aihaos;
     }
     
      public  String aihaoss(){
            for(String s:aihaos ){
              System.  out.println(s);
          }
            return "" ;
     }
}

(3)Converter:
public  class ListConverter extends StrutsTypeConverter{

      @Override
      public  Object convertFromString( Map context, String[] values, Class toClass) {
          List<String> aihaos =  new ArrayList<String>();
            for(String s:values){
              aihaos.add(s);
          }
            return aihaos;
     }

      @Override
      public  String convertToString( Map context, Object o) {
            return null ;
     }
     
}


(4)xwork-conversion.properties:
java.util.List= cn.itheima03.struts2.converter.action.ListConverter


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值