Z jakiegoś powodu nie mogę rozwiązać problemu, nawet po obejrzeniu wielu przykładów tutaj.Spring MVC Ani BindingResult ani zwykły obiekt docelowy dla nazwy komponentu bean
próbuję obsłużyć formularz za pomocą sprężyny 3 MVC, ale otrzymuję następujący błąd:
Neither BindingResult nor plain target object for bean name 'reverseString' available as request attribute
Więc ja niby się to, co jest problemem, ale nie udało mi się go rozwiązać. Oto metoda w moim
klasy ReverseController która rozciąga SimpleFormController:
protected ModelAndView onSubmit(HttpServletRequest request,
HttpServletResponse response, Object command, BindException errors)
throws Exception {
ReverseString revString = (ReverseString) command;
ModelAndView mav = new ModelAndView();
ModelMap map = new ModelMap();
map.addAttribute("reverseString", revString);
mav.addAllObjects(map);
return mav;
}
Moje app-servlet.xml definiuje kontroler następująco:
<bean name="/reverse.app" class="ReverseController">
<property name="commandName" value="reverseString"></property>
<property name="commandClass" value="ReverseString" />
<property name="successView" value="reverseResult" />
<property name="formView" value="reverse" />
</bean>
Jest to forma, w moim odwrocie. jsp:
<form:form method="POST" modelAttribute="reverseString" action="handleForm">
<form:errors path="*" cssClass="errorblock" element="div" />
<table>
<tr>
<td>String to be reversed:</td>
<td><form:input path="stringToReverse" />
</td>
<td><form:errors path="stringToReverse" cssClass="error" />
</td>
</tr>
<tr>
<td colspan="3"><input type="submit" /></td>
</tr>
</table>
</form:form>
I to właśnie zostało zdefiniowane w moim web.xml:
<web-app>
<display-name>Spring Reverse String</display-name>
<welcome-file-list>
<welcome-file>reverse.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>app</servlet-name>
<servlet-class>Dispatcher</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>app</servlet-name>
<url-pattern>*.app</url-pattern>
</servlet-mapping>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/app-servlet.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
</web-app>
I wreszcie, to moja ReverseString obiektu:
public class ReverseString {
public String stringToReverse;
public String reversedString;
public ReverseString(String rawString) {
this.reversedString = reverseString(stringToReverse);
}
public String getStringToReverse() {
return stringToReverse;
}
public void setStringToReverse(String stringToReverse) {
this.stringToReverse = stringToReverse;
}
public String reverseString(String rawString) {
if(rawString == null || rawString.length() <= 1) return rawString;
return reverseString(rawString.substring(1)) + rawString.charAt(0);
}
}
Czy pomieszałeś koncepcje Spring MVC 2.x i 3.x? - proszę napisać pełną klasę kontrolera. – Ralph