我希望从包含生成List < Pair < Integer, String>>
列表的迭代器的相应JSP中更新我的集合< s:TextFiedl >
。
这就是我所做的,但列表为空或包含空值。
行动:
public class ManageRegleArithmetiqueAction extends ActionSupport implements Preparable, JspDataPovider {
private List<Pair<Integer, String>> propositionNumLabelList = new ArrayList<Pair<Integer,String>>();
public void setPropositionNumLabelList(List<Pair<Integer, String>> propositionNumLabelList) {
this.propositionNumLabelList = propositionNumLabelList;
}
public List<Pair<Integer, String>> getPropositionNumLabelList() {
return propositionNumLabelList;
}
}
JSP:
<s:iterator value="propositionNumLabelList" var="pair" status="status">
<tr>
<td CLASS="IHMText">
<s:textfield key="propositionNumLabelList[%{#status.index}].cle" id="%{'propositionNum_' + #status.index}" />
</td>
<td CLASS="IHMText">
<s:textfield key="propositionNumLabelList[%{#status.index}].valeur" id="%{'propositionLabel_' + #status.index}" />
</td>
</tr>
</s:iterator>
配对类:
public class Pair<S, T> implements Serializable {
public Pair(S cle, T valeur) {
super();
this.cle = cle;
this.valeur = valeur;
}
private static final long serialVersionUID = 7231580297094672707L;
private S cle;
private T valeur;
public S getCle() {
return cle;
}
public void setCle(S cle) {
this.cle = cle;
}
public T getValeur() {
return valeur;
}
public void setValeur(T valeur) {
this.valeur = valeur;
}
public static <S, T> Pair<S, T> ofKeyAndValue(S cle, T valeur) {
return new Pair<S, T>(cle, valeur);
}
}
答案 0 :(得分:1)
您应该向Pair
类添加默认构造函数。没有它在填充动作属性时,Struts无法实例化bean。如果Struts知道如何实例化定义了此属性的类,则它可以填充操作的属性。如果需要设置嵌套属性,也是如此。如果在设置其值之前未初始化属性,则默认情况下Struts将实例化一个类。
public Pair() {
}