2017-03-21 2 views
1

Ich möchte meine Sammlung eine List < Pair < Integer, String>> wird aktualisiert von der entsprechenden JSP enthält einen Iterator eine Liste von <s:TextFiedl> generieren.Wie aktualisiere Struts 2 Liste von einem TextField Tag

Hier ist was ich getan habe, aber die Liste ist leer oder enthält null Werte.

Die Aktion:

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; 
    } 

} 

Die 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> 

Das Paar Klasse:

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

Bitte helfen Sie mir ich bin stecken hier :( –

Antwort

1

Sie sollten einen Standard-Konstruktor Pair Klasse hinzuzufügen. Ohne es Struts ist nicht in der Lage, eine Bohne zu instanziieren, wenn Sie Ihre Aktionseigenschaften füllen. Struts können eine Eigenschaft der Aktion auffüllen, wenn sie weiß, wie eine Klasse instanziiert wird, für die diese Eigenschaft definiert ist. Dies gilt auch, wenn Sie geschachtelte Eigenschaften festlegen müssen. Struts standardmäßig instanziieren eine Klasse, wenn die Eigenschaft nicht initialisiert wird, bevor Sie ihren Wert festlegen.

public Pair() { 
} 
+0

ja habe ich herausgefunden, es fehlte haben ein anderes Problem:. Key = mit "propositionNumLabelList [% {# status.index}] cle" das 'verwandelt cle 'aven' valeur 'Attribute zu Tabellen während der Laufzeit (dachte durch Debugging) haben Sie eine Idee, wie Sie es lösen? –

+0

Nicht sicher, was Sie fragen, erstellen Sie eine andere Frage. –