您的位置:首页 > 编程语言 > Java开发

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

2013-08-07 13:57 567 查看
(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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: