当前位置:首页 > 开发 > 编程语言 > Struts > 正文

浅谈struts应用之类型转化

发表于: 2015-06-13   作者:归来朝歌   来源:转载   浏览:
摘要:   在Web开发中,可能遇到这样两个场景:   1:文本框中提交一个字符串,用","分割开来,每一个被分割的内容代表java bean的一个属性,现在需要将该文本中的字符串传到后台,进行处理后将该bean类保存起来   2:在页面上选择自己的爱好(多选),将选择的结果传到后台,而获取选择爱好的属性为list,现在需要分别将每个爱好保存起来 &nbs

  在Web开发中,可能遇到这样两个场景:
  1:文本框中提交一个字符串,用","分割开来,每一个被分割的内容代表java bean的一个属性,现在需要将该文本中的字符串传到后台,进行处理后将该bean类保存起来
  2:在页面上选择自己的爱好(多选),将选择的结果传到后台,而获取选择爱好的属性为list,现在需要分别将每个爱好保存起来

  对于以上两个场景,虽然用jsp和servlet可以解决,但是代码不利于复用以及重构,现在用struts2框架提供的类型转化器进行转化。

  对于场景一,处理步骤如下:

  (1)创建一个Jsp页面,提供表单信息:
   <s:form action="converAction_testUserConverter">
     用户名和密码:<s:textfield name="user" ></s:textfield>
     <s:submit value="提交"></s:submit>
   </s:form>

  (2)创建一个java bean类User:

package day9.bean;

public class User {
	private String username;
	private String password;
	
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	
	
}

 

  (3)写一个Action类ConvertAction,接收页面传来的数据:

 

package day9;

import java.util.List;

import com.opensymphony.xwork2.ActionSupport;

import day9.bean.User;

public class ConvertAction extends ActionSupport{
	//变量名user必须与form表单中的name相同,才能进行类型驱动
	private User user;
	//测试类型转化,输出类的属性信息	
	public String testUserConverter(){
		System.out.println(user.getUsername());
		System.out.println(user.getPassword());
		return "index";
	}
	public String testListConverter(){
  
               for(String temp:aihaos){ 
   
                     System.out.println(temp);
  
               }
  
               return "index";
 
       }
	public User getUser() {
		return user;
	}

	public void setUser(User user) {
		this.user = user;
	}
	public List<String> getAihaos() {
		return aihaos;
	}
	public void setAihaos(List<String> aihaos) {
		this.aihaos = aihaos;
	}
		
}
  

  (4)编写一个转化器类UserConverter,需要继承类StrutsTypeConverter,并重写父类的convertFromString方法和convertToString方法:

 

package day9;

import java.util.Map;

import org.apache.struts2.util.StrutsTypeConverter;

import day9.bean.User;

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

	@Override
	public String convertToString(Map context, Object o) {
		// TODO Auto-generated method stub
		return null;
	}
	
}

   (5)编写配置文件struts-converter.xml,并在主配置文件中struts.xml文件中导入:

  

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
	<package name="converter" namespace="/" extends="struts-default">
		<action name="converAction_*" method="{1}" class="day9.ConvertAction">
			<result name="index">index.jsp</result>
		</action>
	</package>
</struts>

   (5)最后需要在src目录下写一个xwork-conversion.properties配置文件,需要告知struts内核,你要用什么类型转换器来转成你想要的什么类型。

   配置需求: key值为转化后的类型,value值为转化器

   我是这样配置的:day9.bean.User=day9.UserConverter

  

   至于场景二,可以用场景一相似的方法进行转化,最后的配置文件格式为  :  java.util.List=day9.ListConverter

 

   通过以上设置,可以很easy地得到username和password的值,关于类型转化器大概就写到这里吧~

   

浅谈struts应用之类型转化

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
转自:http://blog.csdn.net/lilp_ndsc/article/details/4050469 Struts2 类型转化 一、概述 在B/S
Struts2 类型转化 一、概述 在B/S应用中,将字符串请求参数转换为相应的数据类型,是MVC框架提供的
1、Action配置的各项默认值 (1)、如果没有为action指定class,默认是ActionSupport。 (2)、如果没有
某公司是一家处于快速发展中的中小型销售公司,他们打算架构一个网站。计划分两步走:首先做一个宣
在HTTP请求中的一切都被视为一个String由协议。这包括数字,布尔值,整数,日期,小数和一切。每一
C++与.NET中基础类型的对应及转化 前言:为了介绍C#写界面,C++写算法的快捷交互开发方式,首先介绍c
一 typeid与dynamic_cast 1)RTTI, Runtime Type Identification (RTTI) or Run-time type informat
先上图,页面有两个输入框,其中price字段要求输入必须为整数类型的,当我们输入的了非法的值如一个
【前言】 1.指针是一个记录变量地址的变量,在32位系统中指针变量就是一个32bit的变量(一个int的大
所有的MVC 框架,都需要负责解析 HTTP 请求参数,并将请求参数传给控制器组件。由于 HTTP 请求参数都
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号