首页 > 其他分享 >Struts2类型转换之批量类型转换

Struts2类型转换之批量类型转换

时间:2022-11-02 00:22:26浏览次数:45  
标签:类型转换 批量 list List Struts2 user sb import public

输入页面 input2.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Struts2.3 converter</title>
</head>
<body>

	

	<form action="userAction2.action">

		user info 1: <input type="text" name="user"/><br/>
		user info 2: <input type="text" name="user"/><br/>
		user info 3: <input type="text" name="user"/><br/>
		user info 4: <input type="text" name="user"/><br/>
	
		<input type="submit" value="submit"/>

	</form>

</body>
</html>

流程跳转 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="struts2" extends="struts-default">
		<action name="userAction2" class="space.terwer.struts23.UserAction2">
			<result name="success">/output2.jsp</result>
		</action>
	</package>

</struts>

业务处理 Action 类 UserAction2

package space.terwer.struts23;

import java.util.List;

import com.opensymphony.xwork2.ActionSupport;

import space.terwer.bean.User;

public class UserAction2 extends ActionSupport {

	private List<User> user;

	public List<User> getUser() {
		return user;
	}

	public void setUser(List<User> user) {
		this.user = user;
	}

	@Override
	public String execute() throws Exception {
		for (User u : this.getUser()) {
			System.out.println(u.getUsername() + "," + u.getPassword());
		}

		return SUCCESS;
	}

}

类型转换器 UserAction2-conversion.properties

user=space.terwer.converter.UserConverter3
package space.terwer.converter;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.StringTokenizer;

import org.apache.struts2.util.StrutsTypeConverter;

import space.terwer.bean.User;

public class UserConverter3 extends StrutsTypeConverter {

	@Override
	public Object convertFromString(Map context, String[] values, Class toClass) {
		List<User> list = new ArrayList<>();

		for (String value : values) {
			StringTokenizer st = new StringTokenizer(value, ";");

			User user = new User();

			String username = st.nextToken();
			String pasword = st.nextToken();

			user.setUsername(username);
			user.setPassword(pasword);

			list.add(user);
		}

		return list;
	}

	@Override
	public String convertToString(Map context, Object o) {
		List<User> list = (List) o;

		StringBuilder sb = new StringBuilder();
		sb.append("[");

		for (int i = 0; i < list.size(); i++) {
			User user = list.get(i);
			sb.append("{username=" + user.getUsername());
			sb.append(",password=" + user.getPassword());
			sb.append("}");

			if (i < list.size() - 1) {
				sb.append(",");
			}
		}
		sb.append("]");

		return sb.toString();
	}

}

输出结果 output2.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>  
  
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Struts2.3 converter result</title>
</head>
<body>
	<s:property value="user"/>
</body>
</html>

效果

大功告成。与单个不一样的地方只在于把对象换成了 List​ ,其他的类似。

标签:类型转换,批量,list,List,Struts2,user,sb,import,public
From: https://www.cnblogs.com/tangyouwei/p/batch-type-conversion-of-struts2-type-conversion-2wxw

相关文章

  • Struts2类型转换之单个对象深入研究
    重要特性总结Struts2的类型转换,对于8个原生数据类型以及Date,String等常见类型,Struts2可以使内建的类型转换器实现自动的转换;但对于自定义的对象类型来说,需要我们......
  • 【批量下载】url——wget,给定网址,批量下载文件
    写在前面:最近在学习批量下载sci文章并传入noteexpress,从网上学来了一些方法,其中有一步需要使用url将sci-hub上面的文章批量下载下来。学习网址:【研究生】快速批量下载Web......
  • python批量发送post请求
    importrequestsimportjsonimportpandasaspdlist2=[]false=Falsetrue=True#postheaders={"content-type":"charset=utf8"}url="url链接"#获取......
  • JavaScript类型转换
    ​​JavaScript​​中,类型转换只有三种:转换成数字转换成布尔值转换成字符串经典类型面试题console.log([]==![]);//true代码分析:左侧是一个对象(数组)右侧是一个布尔值,对......
  • 变量类型转换 变量 运算符
    变量类型转换​运算中,不同类型的数据先转化为同一类型,然后进行运算。转换从低级到高级(根据容量来看)。低------------------------------------>高byte,short,c......
  • Python实现批量更改网络设备名
    importparamikoimportdatetimeimporttimef=open('./hostnames.txt','r')hostnames=f.readlines()#hostnames=['1.1.1.1','2.2.2.2','3.3.3.3','192.168.99.10','......
  • Python实现批量网络设备备份
    importparamikoimportdatetimeimporttimef=open('./hostnames.txt','r')#准备主机文件,一台主机占一行hostnames=f.readlines()forhostnameinhostnames:......
  • Python实现批量登录网络设备
    importparamikoimportdatetimeimporttimef=open('./hostnames.txt','r')#准备好主机文件,一台主机占一行hostnames=f.readlines()#hostnames=['1.1.1.1','2.2.......
  • Excel导入数据批量生产建表sql语句
    一、导入jar包1、commons-collections4-4.1.jar2、jxl-2.6.12.jar3、poi-3.17.jar4、poi-ooxml-3.17.jar5、poi-ooxml-schemas-3.17.jar6、spring-core-4.3.19.RELEASE7、xm......
  • Python开发 之 批量读取文件中指定字符
    目录​​1、背景​​​​2、待读取文件​​​​3、读取每一句中的汉字​​1、背景从指定的NLP生成的文件中读取指定的字符。2、待读取文件是以":"作为分隔符的数据,每一行以......