Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Вопрос по Struts. / 7 сообщений из 7, страница 1 из 1
04.08.2005, 18:37
    #33202560
svby
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по Struts.
Вопрос по Struts.
У меня в форме переменное число текстовых полей. Мне нужно сделать проверку их содержимого чтобы все были целые и больше нуля. Как это осуществить в классе ActionForm или может в его дочерных классах?
Если число постоянное полей постоянное всё просто. А вот так не знаю. Возможно ли это и как?


P.S. Что такое commons-validator?
Заранее благодарен.
...
Рейтинг: 0 / 0
04.08.2005, 19:12
    #33202628
Denis Popov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по Struts.
svbyВопрос по Struts.
У меня в форме переменное число текстовых полей. Мне нужно сделать проверку их содержимого чтобы все были целые и больше нуля. Как это осуществить в классе ActionForm или может в его дочерных классах?
Если число постоянное полей постоянное всё просто. А вот так не знаю. Возможно ли это и как?
Как они задаются, приведи пример? А проверять - да, можно в форме или же в action'е.

svbyЧто такое commons-validator?
http://jakarta.apache.org/commons/validator/
A common issue when receiving data either electronically or from user input is verifying the integrity of the data.
...
Рейтинг: 0 / 0
04.08.2005, 19:43
    #33202663
svby
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по Struts.
Denis Popov
Как они задаются, приведи пример? А проверять - да, можно в форме или же в action'е.

Например в интернет магазине выводится сделаные заказы на книги. Название книги, описание, количество каждой книги. Количество каждой книги пользователь может изменять. Каличество каждой книги находтся в текстовом теге. Нужно провереть изменёное значение количества каждой книг. Так как сколько книг разных видов заказал не известно я незнаю как сделать ActionForm для этой формы.
...
Рейтинг: 0 / 0
04.08.2005, 20:24
    #33202696
Denis Popov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по Struts.
Можно сделать в форме атрибут типа Collection или List:
Код: plaintext
1.
2.
3.
 private  List books =  new  LinkedList();
 public  List getBooks() {  return  books; }
 public   void  setBooks(List books) {  this .books = books; }

Элементами списка будут экземпляры некоего класса Book . В action'е перед показом страницы ты заполняешь этот список, на странице показываешь примерно как:
Код: plaintext
1.
2.
3.
<logic:iterate id="book" name="testForm" property="books" indexId="index" >
  <html:text property='<%= "book[" + index + "].amount" %>'/><br>
</logic:iterate>

amount - атрибут класса Book . По submit'y формы можешь проверить данные. В чем именно проблема?
...
Рейтинг: 0 / 0
04.08.2005, 23:42
    #33202859
svby
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по Struts.
Проблема именна проверки, а не построения страницы. Как я понимаю в классе ActionForm я должен реализовать методы set и get для переменных запроса. Потом в методе validate класса ActionForm я должен осуществить проверку этих переменных запроса. Если их количество не известно то что делать.
P.S. Карзина для данных купленых книг у меня организована как HashMap, а
не Link.
...
Рейтинг: 0 / 0
05.08.2005, 12:56
    #33203967
Denis Popov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по Struts.
Так и проверяй либо на форме, что-то вроде:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
 public  ActionErrors validate(ActionMapping mapping, HttpServletRequest request) {
    ActionErrors errors =  super .validate(mapping, request);
    MessageResources resources = ((MessageResources) request.getAttribute(Globals.MESSAGES_KEY));
     for  (Iterator it = books.iterator(); it.hasNext();) {
      Book book = (Book) it.next();
       try  {
        Integer.parseInt(book.getCount().toString());
      }  catch  (NumberFormatException e) {
        errors.add(
          ActionMessages.GLOBAL_MESSAGE,
           new  ActionMessage("errors.integer", resources.getMessage("book.count"))
        );
      }
    }
     return  errors;
  }
List или HashMap - непринципиально. Либо можешь проверить в методе execute твоего action'а:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
 public  ActionForward execute(ActionMapping mapping,
                             ActionForm form,
                             HttpServletRequest request,
                             HttpServletResponse response)
   throws  Exception {
  HttpSession session = request.getSession();

  ActionMessages errors =  new  ActionMessages();
  
  // Проверка, если ошибка - заполняем errors, например
  errors.add(ActionMessages.GLOBAL_MESSAGE,  new  ActionMessage("book.count"));
  
  ...
  
   if  (!errors.isEmpty()) {
      saveMessages(request, errors);
    ActionForward actionForward = mapping.getInputForward();
     return  actionForward;
  }  
  
  ...

}
...
Рейтинг: 0 / 0
05.08.2005, 13:52
    #33204198
Denis Popov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по Struts.
Поправка:
Код: plaintext
1.
2.
//saveMessages(request, errors);
saveErrors(request, errors);
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Вопрос по Struts. / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]