Пытаюсь реализовать табличный ввод на веб-странице. Нужно будет отправлять в сервлет данные "таблицы" произвольной высоты. Количество колонок фиксировано.
Сделал так:
JSP:
- в JSP с помощью JavaScript могу удалять и добавлять куски ..., т.е. количество строк может быть произвольным..
Поскольку в колонках таблицы у соответствующих input-ов одинаковый name, то данные получаю в сервлете в виде массивов с соответствующими именами.
Вот как это делается у меня:
@RequestMapping(value = "/index", method = RequestMethod.POST)
public ModelAndView getInputText(
@RequestParam("column1") String[] column1,
@RequestParam("column2") String[] column2,
@RequestParam("column3") String[] column3) {
// TODO
}
И тут возникает 2 проблемы, которые я пока не придумал как решить без использования костылей..
1. Имена файлов приезжают без пути. А мне обязательно нужен полный путь и имя файла! Потому что в дальнейшем это имя будет использоваться в апплете. Как же всё-таки передавато полное имя файла?
2. column3 у нас соответствуют чекбоксы. Но в массиве я получаю только включенные чекбоксы, а не все. Например, если в таблице 3 строки, а включены только первый и третий чекбокс, то результирующий массив не из 3, а из двух элементов "on". Соответственно, при разборе массива не удастся это сопоставить их column1 - поди разбериьс к какой именно строке относя включенные чекбоксы. А можно как-то передавать и "on" и "off"? Чтобы в массиве таки были все 3 значения column3.
Подозреваю, что и то и другое можно пофиксить с помощью hidden полей, куда жабаскриптом подставлять всё, что мне нужно.. Но что-то пока надеюсь на наличие стандартных методов решения моих проблем..
Помогите, пожалуйста, разобраться!
UPD: С передачей полного пути к файлу из формы по ходу ПОЛНЫЙ облом..
Трюк с копированием жабаскриптом содержимого в текстовый или хидден элемент формы - теперь не проходит. (Точнее проходит только в IE вплоть до 9 версии включительно). Но теперь в большинстве браузеров вопросы безопасности решены по советски - надо-ненадо не волнует, запретить и всё.. )))
Видимо придется городить веб-морду апплету!