2015-01-12 5 views
0

У меня есть JSP, который заполняет int [] и строку [] с помощью контроллера Spring. Когда строковое значение для индекса «", JSP отображает все значения из строки [].Пустая строка [] в JSP

Контроллер заполняет строку [] идентификаторы & значений.
form.setIds(ids);
form.setValues(values);

СПЯ перебирает и заполняет таблицу.
<c:forEach items="${form.ids}" varStatus="status" var="id">
<form:input path="values" value="${form.values[status.index]}" />

Когда строка []: значения содержит: { "A", "B", "", "D"}, элементы 0,1,3-шоу, как ожидалось: 0 = "A" , 1 = "b", 3 = "d". Элемент 2 показывает: «a, b, d» для выхода в JSP для этой линии.

Я пробовал несколько способов рендеринга, таких как вывод вывода в JSTL taglib, и переход к спискам массивов вместо примитивной строки [].

У меня есть чувство, что я что-то с видом :)

ответ

1

Я думаю, ваша ошибка заключается в другом. ${form.values[status.index]} действительно ничего не напечатает, если содержимое вашего массива действительно является пустой строкой.

0

Это заняло некоторое время.

Проблема заключалась в том, что с использованием path = "values" на входе формы, когда мы попадаем в пустой элемент, он отображает все «значения» вместо предполагаемого пустого значения. Исправление состояло в том, чтобы использовать путь = "values ​​[$ {status.index}]" для ввода формы.

Кроме того, чтобы использовать элемент, мне пришлось переключить базовую форму с помощью объектов String [] на объекты List. Это произошло из-за формы, не имеющей инициализированного значения String [] при загрузке, тогда как я мог бы инициализировать как ArrayList, не указывая конкретную длину массива строк.

Смежные вопросы