2014-01-31 2 views
1

Привет, я столкнулся с проблемой и просмотрел по всему Интернету, но все еще не смог выяснить причину. Я отправляю свой фрагмент кода, пожалуйста, помогите мне, поскольку я новичок в весне 3. Я использую modelAttribute в форме и что я хочу, чтобы в контроллере все значения из запроса должны были поддерживаться в объекте, чтобы я мог выполнять валидацию и другие бизнес-логики. Я знаю, что есть ошибка только в моем контроллере.Ни BindingResult, ни простой целевой объект для bean-компонента весной 3

1) index.jsp

<form:form action="login" method="POST" modelAttribute="login"> 
     <table> 
      <tr><td>User Id:</td><td><form:input path="userId"/></td></tr> 
      <tr><td>Password:</td><td><form:password path="userPassword"/></td></tr> 
      <tr><td></td><td><input type="submit" value="Login"/></td></tr> 
     </table> 
    </form:form> 

2) Контроллер

@RequestMapping(value="/login/", method=RequestMethod.POST) 
public String login(@ModelAttribute("login") @Valid Login login,BindingResult result) 
    { 

     System.out.println("We have entered into controller class"); 
     if(result.hasErrors()) 
     { 
      System.out.println("Errors:"+result.getFieldError("userReject")); 
       return "redirect:/login"; 
       } 
       else 
       { 
     return "home";} 
    } 
} 

3) JBoss Log

04:35:29,067 ERROR [org.springframework.web.servlet.tags.form.InputTag] (http--0.0.0.0-8090-1) Neither BindingResult nor plain target object for bean name 'login' available as request attribute: java.lang.IllegalStateException: Neither BindingResult nor plain target object for bean name 'login' available as request attribute 
     at org.springframework.web.servlet.support.BindStatus.<init>(BindStatus.java:141) [spring-webmvc-3.0.5.Release.jar:3.0.5.RELEASE] 

ответ

0

Проблема не в методе вы публикуемую, который обрабатывает форма входа . В методе, используемом для , отображается форма. Форма должна заполнить свои поля из бина с именем «login», и вы не поместили в модель какой-либо компонент с именем «login», то есть в атрибуте request.

Примечание: форма входа в систему никогда не должна использоваться GET. Он должен использовать POST. Вы действительно не хотите, чтобы пароль отображался в адресной строке браузера. И вы не хотите, чтобы он отображался в истории браузера, в журналах сервера и прокси и т. Д.

+0

Thanx @JB Nizet для быстрого ответа. Поскольку я новичок, я не могу разобраться. Его простая страница входа, на которой я буду вводить userid и userpassword, а затем в контроллере, я проверю его с помощью БД и затем проверит пользователя. Не могли бы вы помочь мне с небольшим фрагментом кода, какие изменения я должен сделать? И спасибо за совет. Это была моя ошибка. Я поменял t на POST – Pulkit

+0

Как я уже сказал, ошибка в методе, который вы не отображали, и который вызывается для отображения формы входа. Отправьте этот метод. Если вы показываете JSP напрямую, не пройдя через метод контроллера, тогда исправьте это. Каждый запрос должен проходить через контроллер. Вот что такое MVC. –

+0

, но сэр это моя индексная страница. Я имею в виду, когда я начинаю свое приложение, это должно прийти первым и попросить пользователя ввести учетные данные, в этом подходе, что нужно изменить и что исправить. Если вы хотите, я могу предоставить git-код, если вы хотите взглянуть – Pulkit

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

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