Spring 3 MVC ошибка: недоступны ни BindingResult, ни простой целевой объект для имени компонента «пользователь» - PullRequest
1 голос
/ 19 октября 2011

Я знаю, что эта проблема могла быть решена в другом месте, но я не могу найти удовлетворительное решение моей проблемы. Кстати, я работаю с весны 3.0.2

Login.jsp

<form:form id="_LoginForm" name="LoginForm" modelAttribute="user" action="login" method="POST">
    <form:input path="username" value=""/>
    <form:input path="password" value=""/>
    <input type="submit" value="Submit"/>

LoginController.java

@RequestMapping(value="login", method=RequestMethod.POST)
public String login(@ModelAttribute("user") User user, BindingResult result) {
    System.out.println("recd request");
    return null;
}

Когда я пытаюсь получить доступ к странице login.jsp, я получаю следующую ошибку:

java.lang.IllegalStateException: Neither BindingResult nor plain target object for bean name 'user' available as request attribute
    at org.springframework.web.servlet.support.BindStatus.(BindStatus.java:141)
    at org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getBindStatus(AbstractDataBoundFormElementTag.java:174)
    at org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getPropertyPath(AbstractDataBoundFormElementTag.java:194)
    at org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getName(AbstractDataBoundFormElementTag.java:160)
    at org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.writeDefaultAttributes(AbstractDataBoundFormElementTag.java:123)
    at org.springframework.web.servlet.tags.form.AbstractHtmlElementTag.writeDefaultAttributes(AbstractHtmlElementTag.java:409)
    at org.springframework.web.servlet.tags.form.InputTag.writeTagContent(InputTag.java:140)
    at org.springframework.web.servlet.tags.form.AbstractFormTag.doStartTagInternal(AbstractFormTag.java:102)

Ответы [ 2 ]

1 голос
/ 19 октября 2011

Можете ли вы предоставить свой метод RequestMethod.GET в контроллере? Просто убедитесь, что вы добавляете атрибут modelAttribute в метод GET .

0 голосов
/ 20 октября 2011

Я добавил следующий метод, чтобы сделать эту работу, хотя я чувствую, что должен быть лучший способ заставить это работать без необходимости каждый раз писать метод установки.

applicationContext.xml

<mvc:view-controller path="/" view-name="index" />

index.jsp

<jsp:forward page="index.action"/>

LoginController.java

@RequestMapping(value="index.action", method=RequestMethod.GET)
public String setupLogin(Map<String, Object> modelMap) {        
    modelMap.put("user", new User());
    return "Login";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...