2011-12-05 5 views
5

En mi jsp, tengo algunos campos como este:Struts1: Poner valores de una JSP en la forma que utiliza una lista de 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"> 

Y en mi forma tengo un java.util.List que yo necesita para poblar de los campos en la parte superior:

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

el problema es que la lista no se rellena. ¿Alguna idea? ¡Gracias!

Respuesta

1

Basta con hacer esto

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

Y en la 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

Hay un problema de rendimiento. Para agregar un solo valor, debe iterar todos los campos y luego crear una nueva matriz de cadenas. – Naved

+0

Pero es necesario para la validación y para mostrar la clase de error en el campo conservado –

1

De acuerdo con mi conocimiento,
1. Si se trata de los puntales 1, el campo "$" del dólar no funciona para tomar los valores. 2. No debe especificar el índice en el nombre de la propiedad, pero se utilizará automáticamente por el traductor de etiquetas y por lo tanto su código será algo como

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

espero que esto le ayuda a resolver su problema.

+0

Gracias por su respuesta. Ya hice esto, y el problema no es de $. ¿Por qué quiero usar una lista? Es para validación, para eso si el tercer campo está en error, quiero ver solo este campo en el error y no todos los campos ... –

+0

En mi ejemplo, debe agregar la Lista. Pero no puede tener que proporcionar el índice en la "propiedad". – Naved

Cuestiones relacionadas