2011-12-05 10 views
5

W moim jsp, mam kilka pól tak:Struts 1: Put wartości JSP w formularzu, który używa listy 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"> 

I w moim formularzu mam java.util.list że należy wypełnić z pól na górze:

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

Problem polega na tym, że lista nie jest wypełniona. Jakieś pomysły ??? Dzięki!

Odpowiedz

1

Wystarczy zrobić

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

A w postaci:

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

Wystąpił problem z wydajnością. Aby dodać pojedynczą wartość, należy powtórzyć wszystkie pola, a następnie utworzyć nową tablicę ciągów. – Naved

+0

Ale jest to konieczne do sprawdzania poprawności i wyświetlania klasy błędów na polu conserned –

1

Zgodnie z moją wiedzą,
1. Jeśli jest to kolumna 1, dolara "$" pole nie działa, aby wziąć wartości. 2. Nie należy określić indeks nazwy właściwości, ale zostanie ona automatycznie wykorzystywane przez tłumacza znacznika, a tym samym kodzie coś będzie wyglądać

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

mam nadzieję, że to pomoże w rozwiązaniu problemu.

+0

Dzięki za odpowiedź. Już to zrobiłem, a problem nie pochodzi z $. Dlaczego chcę używać listy? To jest do sprawdzania poprawności, bo jeśli trzecie pole jest błędne, chcę zobaczyć tylko to pole na błędzie, a nie wszystkie pola ... –

+0

W moim przykładzie, musisz dodać listę. Ale nie możesz podać indeksu w "nieruchomości". – Naved