我認爲我的問題很簡單,但我試圖從一個星期才能完成這項工作。如何從列表對象中的屬性從一個到第二個動作
我有一個MainAction
其中有Processes
像這樣的列表:
private List<Process> processes;
與getter和setter
編輯或刪除過程中,我有一個processForm.jsp和ProcessAction
。
所以我的問題是從列表中獲取一個特殊進程的ID到ProcessAction
。
當我試圖這樣的:
<s:hidden name="processes[%{#status.index}].id"/>
的id是隱藏字段
<input type="hidden" name="processes[0].id" value="20" id="ShowMain_processes_0__id">
但不映射到該動作
裏面,當我嘗試這樣的:
<s:hidden name="process.id" value="processes[%{#status.index}].id"/>
i噸根本不工作....
所以有人可以幫我怎麼做?
在這裏,新的細節:
struts.xml的
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.1//EN"
"http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
<package name="default" extends="tiles-default">
<action name="ShowMain" class="com.goemon.smart.action.MainAction">
<result type="tiles">mainForm</result>
</action>
<action name="Cancel" class="com.goemon.smart.action.MainAction">
<result type="redirectAction">ShowMain</result>
</action>
<action name="ExecuteStartAction" class="com.goemon.smart.action.MainAction" method="executeStartCommand">
<result name="success" type="redirectAction">ShowMain</result>
<result name="input" type="redirectAction">ShowMain</result>
</action>
<action name="ExecuteStopAction" class="com.goemon.smart.action.MainAction" method="executeStopCommand">
<result name="success" type="redirectAction">ShowMain</result>
<result name="input" type="redirectAction">ShowMain</result>
</action>
<action name="DeleteProcess" class="com.goemon.smart.action.MainAction" method="deleteProcess">
<result name="success" type="redirectAction">ShowMain</result>
</action>
<action name="ShowAction" class="com.goemon.smart.action.ProcessAction">
<result type="tiles">actionForm</result>
</action>
<action name="CreateAction" class="com.goemon.smart.action.ProcessAction" method="createAction">
<result name="success" type="redirectAction">ShowMain</result>
<result name="error" type="redirectAction">ShowAction</result>
<result name="input" type="redirectAction">ShowAction</result>
</action>
<action name="EditCommandAction" class="com.goemon.smart.action.ProcessAction" method="editAction">
<result name="success" type="tiles">actionForm</result>
</action>
<action name="InsertDefault" class="com.goemon.smart.action.ProcessAction" method="insertDefaults">
<result name="success" type="redirectAction">ShowMain</result>
</action>
</package>
mainForm.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="/struts-tags" prefix="s" %>
<div class="container">
<legend>
<h1><s:text name="header.mainpage"/></h1>
</legend>
<s:iterator var="currentProcess" value="processes">
<div class="jumbotron well col-lg-5 col-lg-offset-1">
<s:form theme="bootstrap" cssClass="bs-example form-horizontal">
<div class="btn-toolbar pull-right">
<s:a action="DeleteProcess">
<button type="button" class="btn btn-default" aria-label="Left Align">
<span class="glyphicon glyphicon-trash" aria-hidden="true"></span>
</button>
</s:a>
<s:a action="EditCommandAction">
<button type="button" class="btn btn-default" aria-label="Left Align">
<span class="glyphicon glyphicon-cog" aria-hidden="true"></span>
</button>
</s:a>
</div>
<s:hidden name="id" value="%{#currentProcess.id}"/>
<h2>
<s:text name="%{#currentProcess.name}"/>
</h2>
<div class="btn-toolbar pull-right">
<s:submit key="btn.start" action="ExecuteStartAction"
cssClass="btn btn-primary btn-lg btn-success"/>
<s:submit key="btn.stop" action="ExecuteStopAction"
cssClass="btn btn-primary btn-lg btn-danger"/>
</div>
</s:form>
</div>
</s:iterator>
<s:debug/>
processForm.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="/struts-tags" prefix="s" %>
<div class="col-lg-6 col-lg-offset-3 well">
<div class="col-lg-12">
<s:form theme="bootstrap" cssClass="bs-example form-horizontal">
<legend>
<s:text name="header.manage"/>
</legend>
<s:hidden name="initial"/>
<s:textfield name="process.name" key="lbl.process.name" cssClass="col-lg-12"/>
<s:textfield name="process.host" key="lbl.process.host" cssClass="col-lg-12"/>
<div class="col-lg-11 pull-right">
<s:iterator var="counter" begin="0" end="2">
<div class="col-lg-12">
<s:hidden name="process.commands[%{#counter}].id"/>
<s:select key="lbl.command.type" list="commandTypeValues"
name="process.commands[%{#counter}].commandType" headerKey=""
headerValue="%{commandTypeValues[#counter]}"/>
<s:textfield name="process.commands[%{#counter}].command"
key="lbl.process.command"/>
</div>
</s:iterator>
</div>
<s:textfield name="process.user" key="lbl.process.user" cssClass="col-lg-12"/>
<s:textfield name="process.password" key="lbl.process.password" cssClass="col-lg-12"/>
<s:submit key="btn.create" action="CreateAction" cssClass="btn btn-primary pull-right"/>
<s:submit key="btn.cancel" action="Cancel" cssClass="btn btn-primary pull-right"/>
<s:debug />
</s:form>
</div>
ProcessAction.java
package com.goemon.smart.action;
import com.goemon.smart.model.CommandType;
import com.goemon.smart.model.Process;
import com.goemon.smart.service.ProcessService;
import com.goemon.smart.util.DefaultingUtil;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.Preparable;
import org.springframework.beans.factory.annotation.Autowired;
/**
* Created by John on 4/4/15.
*/
public class ProcessAction extends ActionSupport implements Preparable {
@Autowired
private ProcessService processService;
@Autowired
private DefaultingUtil defaultingUtil;
private Process process;
private Long id;
private CommandType[] commandTypeValues = CommandType.values();
@Override
public void prepare() throws Exception {
}
public String execute() {
return SUCCESS;
}
public String createAction() {
try {
processService.saveAction(process);
} catch (Exception e) {
return INPUT;
}
return SUCCESS;
}
public String editAction() {
return SUCCESS;
}
public String insertDefaults() {
try {
Process ambiLight = defaultingUtil.ambiLightDefault();
processService.saveAction(ambiLight);
} catch (Exception e) {
return SUCCESS;
}
return SUCCESS;
}
public Process getProcess() {
return process;
}
public void setProcess(Process process) {
this.process = process;
}
public CommandType[] getCommandTypeValues() {
return commandTypeValues;
}
public void setCommandTypeValues(CommandType[] commandTypeValues) {
this.commandTypeValues = commandTypeValues;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
}
在'struts.xml'中發佈實際映射。 –
你想在列表上迭代還是隻想列表中的第一個元素? –
我有一個主頁,我顯示列表中的所有進程,每個元素都有一個刪除和編輯按鈕,所以這就是爲什麼我需要id的原因 – John