2011-12-05 14 views
5

Nel mio jsp, ho alcuni campi come questo:Struts 1: Mettere valori di una JSP in forma che utilizza un elenco Java

<html:text property="field[0]" value="${fieldValue}" indexed="true"> 
<html:text property="field[1]" value="${fieldValue}" indexed="true"> 
<html:text property="field[2]" value="${fieldValue}" indexed="true"> 
<html:text property="field[3]" value="${fieldValue}" indexed="true"> 

E nella mia forma ho un java.util.List che ho bisogno per popolare dai campi in alto:

private List<Double> field = new ArrayList<Double>(); 

public final List<Double> getField() { 
    return field; 
} 
public final void setField(final List<Double> valeur) { 
    this.field = valeur; 
} 

il problema è che la lista non viene popolata. Qualche idea ??? Grazie !!

risposta

1

semplicemente questo

<html:text property="field[0]" value="${fieldValue}" indexed="true"> 
<html:text property="field[1]" value="${fieldValue}" indexed="true"> 
<html:text property="field[2]" value="${fieldValue}" indexed="true"> 
<html:text property="field[3]" value="${fieldValue}" indexed="true"> 

e nella forma:

private String[] field = new String[0]; 

public final String getField(int index) { 
    return field[index]; 
} 
public final void setField(int index, String value) { 
    //Copy last values of the array into a temporary array, then add the new value 
    String[tmp] = new String[index + 1]; 
    for(int i=0; i<field.length; i++){ 
     tmp[i] = field[i]; 
    } 
    tmp[index] = value; 
    this.field = tmp; 
} 
+0

C'è un problema di prestazioni. Per aggiungere un singolo valore deve iterare tutti i campi e quindi creare un nuovo array di stringhe. – Naved

+0

Ma è necessario per la convalida e per mostrare la classe di errore nel campo interessato –

1

Secondo le mie conoscenze,
1. Se è puntone 1, il campo "$" del dollaro non funziona per prendere i valori. 2. Non si dovrebbe specificare l'indice nel nome della proprietà, ma sarà utilizzato automaticamente dal traduttore tag e, quindi, il codice sarà qualcosa di simile

<html:text property="field" indexed="true"> 
<html:text property="field" indexed="true"> 
<html:text property="field" indexed="true"> 
<html:text property="field" indexed="true"> 

Spero che questo vi aiuta a risolvere il problema.

+0

Grazie per la risposta. L'ho già fatto e il problema non è da $. Perché voglio usare una lista? È per la convalida, per questo se il terzo campo è in errore, voglio vedere solo questo campo in caso di errore e non tutti i campi ... –

+0

Nel mio esempio, Devi aggiungere Elenco. Ma non puoi dover fornire l'indice nella "proprietà". – Naved

Problemi correlati