Hi, all
I am doing a test on SimpleFormController but never reach defined successView. After submit the form, I was directed to formView immediately.
Here is what I do:
--- dispatcher-servlet.xml ---
<bean name="/signonForm.form" class="signonFormController">
<property name="sessionForm" value="true"/>
<property name="commandClass" value="hashCommand"/>
<property name="formView" value="signonForm"/>
<property name="successView" value="welcome"/>
</bean>
<bean id="viewResolver" class="org.springframework.web.servlet.view.Intern alResourceViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlVi ew"/>
<property name="prefix" value="/WEB-INF/view/"/>
<property name="suffix" value=".jsp"/>
</bean>
--- signonForm.jsp ---
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
<%@ taglib prefix="spring" uri="/spring" %>
<html>
<head>
<title>Sign on</title>
</head>
<body>
<center>
<h2>Spring Framework (SimpleFormController)</h2>
<form method=get>
<table>
<spring:bind path="command.formData['username']">
<tr><td>ID:</td><td><input type=text name=username size=15 value="<c:out value="${status.value}"/>"</td></tr>
</spring:bind>
<tr><td>Password:</td><td><input type=password name=password size=15></td></tr>
<tr><td colspan=2 align=center><input type=submit value=SingOn></td></tr>
</table>
</form>
<spring:hasBindErrors name="command">
<b>Binding error!</b>
</spring:hasBindErrors>
</center>
</body>
</html>
--- signonFormController.java ---
import org.springframework.validation.*;
import org.springframework.web.servlet.*;
import org.springframework.web.servlet.mvc.*;
import javax.servlet.*;
import javax.servlet.http.*;
import org.apache.log4j.*;
import java.util.*;
public class signonFormController extends SimpleFormController {
Logger log;
String logfile="logs/myspring.log";
public signonFormController() throws Exception {
log=Logger.getLogger("myspring");
log.addAppender(new FileAppender(new PatternLayout("%d %p: %m"),logfile));
}
protected ModelAndView onSubmit(HttpServletRequest request, HttpServletResponse response, Object command, BindException errors) throws Exception {
log.debug("signonFormController.java onSubmit()");
return new ModelAndView("signonForm");
}
protected Object formBackingObject(HttpServletRequest request) {
HashMap prevInput=new HashMap();
if ( request.getParameter("username") != "" ) {
prevInput.put("username",request.getParameter("use rname"));
}
if ( request.getParameter("password") != "" ) {
prevInput.put("password",request.getParameter("pas sword"));
}
hashCommand prevCommand=new hashCommand();
prevCommand.setFormData(prevInput);
return prevCommand;
}
}
Any idea? Do I need a validator class? It takes me several days and still no progress.
Thanks,
Vincent Chen


Reply With Quote