【发布时间】:2014-09-01 06:09:58
【问题描述】:
我有一个迭代器,它需要使用映射属性或索引属性,但我的 getter-setter 没有获得这些值。
例如: (这只是一个例子。最终的想法是我是否可以在 struts 2 中使用映射属性。如果可以,那么如何。)
index.jsp:
<s:form action="hello" namespace="foo">
<s:textfield name="arp(0)" /> <br/>
<s:textfield name="prp(0)" /> <br/>
<s:textfield name="arp(1)" /> <br/>
<s:textfield name="prp(1)" /> <br/>
<s:submit value="Say Hello" />
</s:form>
helloWorld.action:
class PRLists {
String arp;
String prp;
public String getArp() {
return Arp;
}
public void setArp(String aRP) {
arp = aRP;
}
public String getPrp() {
return prp;
}
public void setPrp(String pRP) {
prp = pRP;
}
}
public class HelloWorldAction {
ArrayList<PRLists> prlist = new ArrayList<PRLists>();
public String execute() throws Exception {
System.out.println("ruuning execute");
return "success";
}
public ArrayList<PRLists> getPrlist() {
return prlist;
}
public void setPrlist(ArrayList<PRLists> prlist) {
this.prlist = prlist;
}
public String getArp(String key) {
int index = Integer.parseInt(key);
return prlist[index].arp;
}
public void setArp(String key, Object value) {
System.out.println("set ARP: index:" + index + ", value" + value);
int index = Integer.parseInt(key);
prlist[index].arp = value.toString();
}
public String getPrp(String key) {
int index = Integer.parseInt(key);
return prlist[index].prp;
}
public void setPrp(String key, Object value) {
System.out.println("set PRP, Key:" + key + ", value:" + value);
int index = Integer.parseInt(key);
prlist[index].prp = value.toString();
}
}
之前我在 struts 1 中有这种工作函数,但现在我正试图将它移到 struts 2。现在我在 HelloWorldAction.java 中用于 arp 和 prp 的 setter 函数在表单提交时不会被调用。
public void setArp(String key, Object value);
public void setPrp(String key, Object value);
<s:textfield name="prlist[0].arp" /> 可以工作,但我们有一些依赖代码需要使用名称为 <s:textfield name="arp(0)" /> 的字段。
我不知道 struts 2 是否支持映射属性。如果支持,那我该如何使用呢。
我还发现了一个相关问题:https://issues.liferay.com/browse/LPS-14128
注意:我对问题描述做了一些修改
提前致谢。
【问题讨论】: