如何从 TextField 标记更新 struts 2 列表
How to update struts 2 List from a TextField Tag
我想让我的 collection a 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>
一对Class:
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);
}
}
您应该将默认构造函数添加到 Pair
class。没有它,Struts 无法在填充操作属性时实例化 bean。如果 Struts 知道如何实例化此 属性 已定义的 class,则它可以填充 属性 操作。如果您需要设置嵌套属性,也是如此。 Struts 默认实例化一个 class 如果 属性 在设置它的值之前没有被初始化。
public Pair() {
}
我想让我的 collection a 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>
一对Class:
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);
}
}
您应该将默认构造函数添加到 Pair
class。没有它,Struts 无法在填充操作属性时实例化 bean。如果 Struts 知道如何实例化此 属性 已定义的 class,则它可以填充 属性 操作。如果您需要设置嵌套属性,也是如此。 Struts 默认实例化一个 class 如果 属性 在设置它的值之前没有被初始化。
public Pair() {
}