![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
Dreamtraveler |
|
|||
Новичок Профиль Группа: Участник Сообщений: 47 Регистрация: 23.11.2009 Репутация: нет Всего: нет |
Здравствуйте.
У меня возник вопрос, заключается он в следующем: Как мне получить данные в командный объект (Spring) из Drop-dawn List т.е. <select><option> и т.д. ? Вот из просто строки input они берутся как value = ${status.value} И еще вопрос. Когда описывается контроллер (модель MVC) SimpleFormController есть поля команд класс и команд нейм, как мне задать несколько командных классов и имен соответственно. Это реально вообще? Просто если на странице данные относящиеся к разным командным объектам как быть? Заранее благодарю! |
|||
|
||||
Akeem |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 381 Регистрация: 14.7.2006 Где: Киев/Украина Репутация: нет Всего: 3 |
В Struts 1* это делается довольно просто. Пишется свой клас формы MyForm extends ActionForm где String nameofmyselector имя селестора и сюда же запишется твой выбранный option
И в конфиге прописываешь мапинг на твою форму вместо SimpleActionForm
PS немного что-то не в тему. Ну принцип я думаю тот же. Это сообщение отредактировал(а) Akeem - 12.12.2009, 20:16 -------------------- Мир огромен и мы только муравьи в нём! (С) formicha |
|||
|
||||
Egik2 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 302 Регистрация: 29.7.2008 Где: Агудзера Репутация: 2 Всего: 11 |
Мне кажется что здесь дело даже не в Spring, а в общем принципе передачи параметров от форм.
Вы должны просто в теге <select> назначить имя, например:
После этого использовать то же самое: value = ${hello.value} и оно будет равнятся значению option-value, который был выбран -------------------- Три великие добродетели программиста: лень, нетерпение и самомнение (Larry Wall) a-nav.com developer-blog.ru world-poetry.org |
|||
|
||||
sergioK |
|
||||
Бывалый ![]() Профиль Группа: Awaiting Authorisation Сообщений: 207 Регистрация: 15.2.2008 Репутация: нет Всего: нет |
это как водить машину за столом ![]() значением в обычном jsp это не проблема , здесь же фраймворк это делает за меня поэтому нужно один раз посмотреть пример , общие рассуждения тут не нужны ![]() |
||||
|
|||||
garbuz |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 677 Регистрация: 22.1.2008 Репутация: 8 Всего: 11 |
http://www.htmlbook.ru/html/select.html
По теме
Не ленитесь смотреть в документацию. Там все есть. |
|||
|
||||
sergioK |
|
||||
Бывалый ![]() Профиль Группа: Awaiting Authorisation Сообщений: 207 Регистрация: 15.2.2008 Репутация: нет Всего: нет |
http://static.springsource.org/spring/docs...aglib-selecttag там то же самое что у вас <tr> <td>Skills:</td> <td><form:select path="skills" items="${skills}"/></td> </tr> а вот что такое skills не понятно по логике должен быть Map или array , но примера класа там нет может и есть но я не нашел или есть какая то еще документация ? если вы это делали так сбосьте пример класса , если бы все было просто и понятно в докуметации то форум был бы не нужен ![]() |
||||
|
|||||
garbuz |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 677 Регистрация: 22.1.2008 Репутация: 8 Всего: 11 |
Наверняка в вашем случае skills это коллекция, которая входит в состав commandObject, тогда сам комбобокс на странице должен быть multiple. Чтобы забиндить на объект коллекцию, значения которой вы выбираете из листа, вам надо использовать кастомный биндер. В случае с коллецией я делал так. В класс контроллера вставляем
Это в случае с коллекцией. Могут понадобиться еще методы getAsText() и setAsText(); Это сообщение отредактировал(а) garbuz - 13.12.2009, 14:06 |
|||
|
||||
sergioK |
|
|||
Бывалый ![]() Профиль Группа: Awaiting Authorisation Сообщений: 207 Регистрация: 15.2.2008 Репутация: нет Всего: нет |
cоmbo не может быть не колекцией тоесь может но это извращение ![]() непонятны две вещи 1) как получить binder и почему в примерах обходяться без него ? 2) где код класса заполняющего данные? , прошу уже 4 раз ![]() |
|||
|
||||
garbuz |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 677 Регистрация: 22.1.2008 Репутация: 8 Всего: 11 |
sergioK, то что пишет референс официальный - это лишь небольшая часть от спринга.
Вот еще раз биндер
Можете этот метод вставлять прямо в контроллер. Для заполнения обджекта данными не нужен никакой доп класс, пользуйтесь биндигом. Можно посмотреть в пакет org.springframework.beans.propertyeditors, там много различных раелизаций. В том числе и со временем и датой, у многих на этот счет возникают вопросы. |
|||
|
||||
sergioK |
|
||||||
Бывалый ![]() Профиль Группа: Awaiting Authorisation Сообщений: 207 Регистрация: 15.2.2008 Репутация: нет Всего: нет |
так есть еще спринг неофициальный что-ли? ![]() что в вашем примере находиться в переменной element? что из себя представляет класс skill и класс skillService? |
||||||
|
|||||||
garbuz |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 677 Регистрация: 22.1.2008 Репутация: 8 Всего: 11 |
Еще какой официальный. Читайте на сайте, в книгах и на форумах. element в данном случае - это значение, полученное из селекта на странице, получаем id, получаем сам объект и отдаем его далше на обработку\биндинг. skill - объект некого класса Skill, не важно какого. skillService - соответственно сервис, работающий с данным классом, предоставляющий дао методы. Взял из вашего примера выше. sergioK, постарайтесь разобраться, а то не чувствуется упорства. Все получится. ![]() |
|||
|
||||
sergioK |
|
||||
Бывалый ![]() Профиль Группа: Awaiting Authorisation Сообщений: 207 Регистрация: 15.2.2008 Репутация: нет Всего: нет |
мой класс выглядит так [code=nocolor] package springapp.service; import java.util.HashMap; import java.util.Map; public class Currency<E> { /** * */ private static final long serialVersionUID = 1L; private String details; private String country="USA"; private String currency; private String baseCurrency="USD"; private double rate; private Map<String, Double> list = new HashMap<String, Double>(); private String rates[]={"USD/EUR","USD/GRP"}; public Map<String, Double> getList() { return list; } public void setList(Map<String, Double> list) { this.list = list; } // cacheable result set public double getRate() { return rate; } public Currency(){ init(); } public void init(){ list.put("USD/EUR", 1.48); list.put("USD/GRP", 0.6); list.put("USD/CAD", 1.15); list.put("USD/JPY", 85.90); list.put("USD/AU", 1.50); } public void setRate(double rate) { this.rate = rate; } public void setDetails(String details) { this.details = details; } public String getDetails() { return details; } public void setCountry(String country) { this.country = country; } public String getCountry() { return country; } public void setCurrency(String currency) { this.currency = currency; } public String getCurrency() { return currency; } public void setBaseCurrency(String baseCurrency) { this.baseCurrency = baseCurrency; } public String getBaseCurrency() { return baseCurrency; } public void setRates(String rates[]) { this.rates = rates; } public String[] getRates() { return rates; } } /code] биндер не работает что я должен прописать в строке binder.registerCustomEditor (), пробовал сделать класс как ехtеnd ArrayList не помогает Я заполняю данные через referenceData , formBackingObject что мне даст работа c биндером ? |
||||
|
|||||
garbuz |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 677 Регистрация: 22.1.2008 Репутация: 8 Всего: 11 |
Класс Currency, это тот класс комманд-обджекта? Именно его вы создаете или нет? С чем возникают проблемы? С биндингом map или чего-то другого? Подробнее опишите. |
|||
|
||||
sergioK |
|
||||||
Бывалый ![]() Профиль Группа: Awaiting Authorisation Сообщений: 207 Регистрация: 15.2.2008 Репутация: нет Всего: нет |
ну да Curency это класс в котором собираються (создаються ) данные методе referenceData(HttpServletRequest request, Object command,Errors errors) я прописываю Currency<Object> currency= (Currency<Object>) command; и получаю к нему доступ тут все нормально , выбранный в комбо боксе элемент получаю при помощи request.getParameter("list") , где list это мар внутри класса Сurrency тут вопщем проблемы нет тоже самое Я хочу проверить через initBinder зарегистрировав биндер , и обработать все в методе convertElement вот код
вопрос собсвенно и в том что не так т,е , что-то не так в строке binder.registerCustomEditor(List.class, "Currency", new CustomCollectionEditor(List.class) пробовал binder.registerCustomEditor(Map.class, "list", new CustomMapEditor(Map.class) // без результата т,е, что нужно написать/сделать чтобы метод convertElement вызывался ? т,е, что должно быть в параметрах cмотрел доку ничего не понял , как нужно правильно регистировать биндер? , чтобы для начала увидеть результат строки System.out.println("555555555 element = " +"'"+element+"'"); что такое propertyEditor в документации ничего не понятно , как с ним работать ? или я плохо соображаю ![]() |
||||||
|
|||||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |