Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Вопрос про форму Spring и контроллер к ней / 8 сообщений из 8, страница 1 из 1
31.05.2010, 11:36:18
    #36658608
Usik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про форму Spring и контроллер к ней
Создал класс, написал пару аннотаций
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
 import  javax.validation.constraints.NotNull;
 import  javax.validation.constraints.Size;

 public   class  Login
{        
    @NotNull
    @Size(min =  5 , max =  20 ,"Введите пароль")
     private  String password1;
    
    @NotNull
    @Size(min =  5 , max =  20 ,"Повторите проль")
     private  String password2;
   
   Getters & Setters
}

Сделал jsp форму

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<html>
  <head>
    <title>Login form</title>
  </head>
  <body>
    <h1>Login form</h1>
    <form:form method="post" modelAttribute="login">
      <div>
        <form:input path="password" id="password" />
        <form:errors path="password" />
      </div>
      <div>
        <form:input path="password2" id="password2" />
        <form:errors path="password2" />
      </div>
      <div>
        <input type="submit" />
      </div>
    </form:form>
  </body>
</html>

Сам контроллер

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
@Controller
 public   class  LoginFormController {

    @RequestMapping(value = "/login-form", method = RequestMethod.GET)
     public  String getLoginForm(Model model) {
        model.addAttribute( new  Login());
         return  "login-form";
    }
    
    @RequestMapping(value = "/login-form", method = RequestMethod.POST)
     public  String validateLoginForm(@Valid Login lg, BindingResult result) {           
         if  (!result.hasErrors()) {
           //Что-то делаем           
             return  "redirect:login-view";
        }
         return  "/login-form";
    }   
}

Если я ввожу пароль меньше 5 символов, то он мне пишет сообщение об ошибке, а само поле не очищает! Как сделать так чтобы он очищал поле, если я ввел меньше символов чем нужно, и при этом писал ошибку?
...
Рейтинг: 0 / 0
31.05.2010, 16:41:14
    #36659439
Emix
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про форму Spring и контроллер к ней
Spring не очищает поле, в котором есть ошибка. В принцине и не должен.
Это нужно делать самому с помощью JavaScript (например, если елемент ошибки не пустой, то очитить)
или
вычислить что в валидация таки не прошла и самому очистить поле пароля.
что-типа такого:
Код: plaintext
1.
2.
3.
4.
5.
6.
...
loginValidator.validatePassword(login, result);
 if  (result.hasErrors()){
   login.setPassword1("");
}
...
Чтобы получить login может пригодится аннотация @ModelAttribute("login") Login login.

Возможно существует лучшее решение.
...
Рейтинг: 0 / 0
31.05.2010, 23:59:03
    #36660221
dmitriyche
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про форму Spring и контроллер к ней
UsikЕсли я ввожу пароль меньше 5 символов, то он мне пишет сообщение об ошибке, а само поле не очищает! Как сделать так чтобы он очищал поле, если я ввел меньше символов чем нужно, и при этом писал ошибку?
Очистить это поле самому :)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
...
    @RequestMapping(value = "/login-form", method = RequestMethod.POST)
     public  String validateLoginForm(@Valid Login lg, BindingResult result) {           
         if  (!result.hasErrors()) {
            //Что-то делаем
            lg.setPassword1("");
            lg.setPassword2("");
             return  "redirect:login-view";
        }
         return  "/login-form";
    }
...
Стукни завтра в аську
...
Рейтинг: 0 / 0
01.06.2010, 02:57:12
    #36660316
Emix
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про форму Spring и контроллер к ней
dmitriyche,

Код: plaintext
1.
 if  (!result.hasErrors()) {...

действительно нужно устанавливать поле пароля,
когда валидация НЕ имеет ошибок?
Наверное, " ! " нужно убрать.
...
Рейтинг: 0 / 0
02.06.2010, 00:36:04
    #36662747
dmitriyche
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про форму Spring и контроллер к ней
Emix,
Да, действительно, ошибся я вчера.
Так будет правильней:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
...
    @RequestMapping(value = "/login-form", method = RequestMethod.POST)
    public String validateLoginForm(@Valid Login lg, BindingResult result) {           
        if (!result.hasErrors()) {
            //Что-то делаем
            return "redirect:login-view";
        }
        
        lg.setPassword1("");
        lg.setPassword2("");
        return "/login-form";
    }
...
...
Рейтинг: 0 / 0
02.06.2010, 10:05:12
    #36663107
Usik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про форму Spring и контроллер к ней
Я дописал сторочки
Код: plaintext
1.
2.
3.
  
 lg.setPassword1("");
 lg.setPassword2("");

В форму ввел данные меньше 5, нажал , сабмит, предупреждение об ошибке высветелось, а в форме как были некорректные данные так они и остались.
...
Рейтинг: 0 / 0
02.06.2010, 13:18:51
    #36663827
dmitriyche
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про форму Spring и контроллер к ней
Usik,

Самое простое решение - сделайте form:password вместо form:input
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
24.01.2012, 18:41:15
    #37629585
ZtrZ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос про форму Spring и контроллер к ней
У меня похожая проблема, только вот почему-то не выводит сообщение об ошибках на форме.!!

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
@RequestMapping(value = "/add", method = RequestMethod.POST)
    public String addPerson(@ModelAttribute @Valid Person person, BindingResult result) {
        if(result.hasErrors()){
            
        return "redirect:/add";  
        }
        else{
        personService.addPerson(person); 
        return "redirect:/";}
    }



Код: java
1.
2.
3.
4.
@NotEmpty(message="Not empty!!")
    @Column(name = "firstName")
    private String firstName;
    



Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
<form:form modelAttribute="personAttribute" method="post" action="add">

            <table>
                <tr>
                    <td>First Name</td>
                    <td><form:input path="firstName" /></td>
                    <td><form:errors path="firstName" cssClass="error"/></td>
                </tr>
                <tr>
                    <td>Last</td>
                    <td><form:input path="lastName" /></td>
                    <td>&nbsp;</td>
                </tr>



В итоге когда я НЕ ввожу данные по firstName, то получаю просто форму для ввода на которой нет никаких сообщений об ошибке
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Вопрос про форму Spring и контроллер к ней / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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