Struts2 从前端jsp向action传递自定义类型的链表数据

(1)自定义类:


public class AutoTrigger {
	
	private int autoTriggerId;
	private String profile;
	private int productId;
	private int testSuiteId;
	
	public int getAutoTriggerId() {
		return autoTriggerId;
	}
	public void setAutoTriggerId(int autoTriggerId) {
		this.autoTriggerId = autoTriggerId;
	}
	public String getProfile() {
		return profile;
	}
	public void setProfile(String profile) {
		this.profile = profile;
	}
	public int getProductId() {
		return productId;
	}
	public void setProductId(int productId) {
		this.productId = productId;
	}
	public int getTestSuiteId() {
		return testSuiteId;
	}
	public void setTestSuiteId(int testSuiteId) {
		this.testSuiteId = testSuiteId;
	}

	public String toString(){
		return "autoTriggerId : "+ autoTriggerId +" profile : " + profile + " productId : " + productId +" testSuiteId : " + testSuiteId;
	}
	

}

(2)对应这个类的转换类

import java.util.Map;

import com.adobe.omniture.bean.AutoTrigger;

import ognl.DefaultTypeConverter;


public class AutoTriggerConverter extends DefaultTypeConverter{
	private final String classPattern = "autoTriggerId : (.+) profile : (.+) productId : (.+) testSuiteId : (.+)";
	public Object convertValue(Map context, Object value, Class toType){

		if(toType == AutoTrigger.class){

			String [] params = (String [] )value;
//			System.out.println("AutoTriggerconverter: +++++++++++++++++++++params = "+params[0]);
			AutoTrigger auto = new AutoTrigger();
			String [] attrs = ThucydidesUtilTools.matchs(params[0], classPattern);
			auto.setAutoTriggerId(Integer.parseInt(attrs[0].trim()));
			auto.setProfile(attrs[1].trim());
			auto.setProductId(Integer.parseInt(attrs[2].trim()));
			auto.setTestSuiteId(Integer.parseInt(attrs[3].trim()));
			return auto;
		}else{
			AutoTrigger auto = (AutoTrigger)value;
			return auto.toString();
		}
		
	}
	

}
(3)将他注册为struts2的全局转换类,在xwork-conversion.properties中配置

somepackage.AutoTrigger=somepackage.AutoTriggerConverter

(4)需要的action类

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

import com.adobe.omniture.bean.AutoTrigger;
import com.adobe.omniture.service.AddAutoTriggerService;
import com.opensymphony.xwork2.ActionSupport;

public class AddAutoTriggerAction extends ActionSupport {
	private List<AutoTrigger> autoTriggers;
	private List<String> testSuiteProfiles, selectedProfiles;
	private HashMap<String , Boolean> showProfiles;
	private int productId;
	private int testSuiteId;
	private AddAutoTriggerService addAutoTriggerService;
	
	public AddAutoTriggerAction(){
		testSuiteProfiles = new ArrayList<String>();
		selectedProfiles = new ArrayList<String>();
		showProfiles = new HashMap<String, Boolean>();
		autoTriggers = new ArrayList<AutoTrigger>();
	}
	
	public String show(){
		autoTriggers = addAutoTriggerService.getAutoTrigers(productId);
		
		for(AutoTrigger auto : autoTriggers){
			
			if((auto.getTestSuiteId() == testSuiteId)&&(!testSuiteProfiles.contains(auto.getProfile()))){
				testSuiteProfiles.add(auto.getProfile());
			}
			
		}
		
		for(AutoTrigger auto : autoTriggers){
			String tmpProfile = auto.getProfile();
			
			if(!showProfiles.containsKey(tmpProfile)){
				if(testSuiteProfiles.contains(tmpProfile)){
					showProfiles.put(tmpProfile, true);
				}else{
					showProfiles.put(tmpProfile, false);
				}
			}
		}
		System.out.println("++++++++++++++++++++++++++++++ in show");

		return SUCCESS;
	}
	
	public String save(){

		
		System.out.println("++++++++++++++++++++++++++++++ in save");
		System.out.println("++++++++++++++++++++++++++++++ autoTriggers = "+autoTriggers.size());
		System.out.println("++++++++++++++++++++++++++++++ productId = "+productId);
		System.out.println("++++++++++++++++++++++++++++++ testSuiteId = "+testSuiteId);
		
		System.out.println("++++++++++++++++++++++++++++++ testSuiteProfiles = "+testSuiteProfiles.size());
		for(String test : testSuiteProfiles){
			System.out.println("Profile : "+ test);
		}
		System.out.println("++++++++++++++++++++++++++++++ selectedProfiles = "+selectedProfiles.size());
		for(String test : selectedProfiles){
			System.out.println("Profile : "+ test);
		}
		addAutoTriggerService.saveAutoTriggers(productId, testSuiteId, autoTriggers, testSuiteProfiles, selectedProfiles);
		return SUCCESS;
	}
	
	public List<AutoTrigger> getAutoTriggers() {
		return autoTriggers;
	}
	public void setAutoTriggers(List<AutoTrigger> autoTriggers) {
		this.autoTriggers = autoTriggers;
	}
	public int getProductId() {
		return productId;
	}
	public void setProductId(int productId) {
		this.productId = productId;
	}

	
	public int getTestSuiteId() {
		return testSuiteId;
	}

	public void setTestSuiteId(int testSuiteId) {
		this.testSuiteId = testSuiteId;
	}

	public List<String> getTestSuiteProfiles() {
		return testSuiteProfiles;
	}

	public void setTestSuiteProfiles(List<String> testSuiteProfiles) {
		this.testSuiteProfiles = testSuiteProfiles;
	}

	public List<String> getSelectedProfiles() {
		return selectedProfiles;
	}

	public void setSelectedProfiles(List<String> selectedProfiles) {
		this.selectedProfiles = selectedProfiles;
	}

	public AddAutoTriggerService getAddAutoTriggerService() {
		return addAutoTriggerService;
	}

	public void setAddAutoTriggerService(AddAutoTriggerService addAutoTriggerService) {
		this.addAutoTriggerService = addAutoTriggerService;
	}

	public HashMap<String, Boolean> getShowProfiles() {
		return showProfiles;
	}

	public void setShowProfiles(HashMap<String, Boolean> showProfiles) {
		this.showProfiles = showProfiles;
	}



	
	
	
	

}
(5)向上面action类传递List<AutoTrigger> 链表的jsp页面

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Add Auto Trigger</title>
</head>
<body>
	<div class="profile">
		<form name="addAutoTrigger" action="saveAutoTriggerAction.action">
			<input type="hidden" name="productId" value='<s:property value="productId" />' />
			<input type="hidden" name="testSuiteId" value='<s:property value="testSuiteId" />' />
			<input type="hidden" name="testSuiteProfiles" value='<s:property value="testSuiteProfiles" />' />
			<s:iterator  value="testSuiteProfiles" id="test" status="st">
				<input type="hidden" name="testSuiteProfiles[<s:property value="#st.count-1"/>]" value="<s:property value="#test" />" />
			</s:iterator>
			<s:iterator  value="autoTriggers" id="auto" status="st">
				<input type="hidden" name="autoTriggers[<s:property value="#st.count-1"/>]" value="<s:property value="#auto" />" />
			</s:iterator>
			
			<s:iterator value="showProfiles" id="profile">
				<input type="checkbox" name="selectedProfiles" value="<s:property value="#profile.key" />" 
					<s:if test="#profile.value==true">checked="checked"</s:if>
				/>
				<s:property value="#profile.key" />
				<br/> 
			</s:iterator>
			<br/>
			<input type="submit" value="Submit"  />
		</form>
	</div>
	<s:debug></s:debug>
</body>
</html>




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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

WitsMakeMen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值