vincent
Oct 11th, 2005, 11:18 AM
Hi, all
I am doing some experiments on SimpleFormController, but still can't make it work. Any help will be appreciated.
Here is my code:
--- 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>
--- 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=post>
<table>
<spring:bind path="command.formData['username']">
<tr><td>ID:</td><td><input type=text size=15 name=username></td></tr>
</spring:bind>
<spring:bind path="command.formData['password']">
<tr><td>Password:</td><td><input type=password size=15 name=password></td></tr>
</spring:bind>
<tr><td colspan=2 align=center><input type=submit value=SingOn></td></tr>
</table>
</form>
</center>
</body>
</html>
--- hashCommand.java ---
import java.util.*;
public class hashCommand {
private HashMap formData;
public hashCommand() {
formData=new HashMap();
}
public void setFormData(HashMap formData) {
this.formData=formData;
}
public HashMap getFormData() {
return this.formData;
}
}
--- signonFormController.java ---
import org.springframework.validation.*;
import org.springframework.web.servlet.*;
import org.springframework.web.servlet.mvc.*;
import org.springframework.web.servlet.view.*;
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()\r\n");
HashMap formData=((hashCommand)command).getFormData();
log.debug("signonFormController.java command data - "+formData+"\r\n");
return new ModelAndView("welcome");
}
/*
protected Object formBackingObject(HttpServletRequest request) {
return new hashCommand();
}
*/
}
I see this entry in my log file:
2005-10-11 23:07:15,992 DEBUG: signonFormController.java command data - {}
It looks like a spring binding problem. Request parameters didn't reach my commandClass for some reason, I got am empty hashmap which supposed to have 2 keys from form input according to log output. Why? Did I do anything wrong?
Thanks,
Vincent Chen
I am doing some experiments on SimpleFormController, but still can't make it work. Any help will be appreciated.
Here is my code:
--- 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>
--- 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=post>
<table>
<spring:bind path="command.formData['username']">
<tr><td>ID:</td><td><input type=text size=15 name=username></td></tr>
</spring:bind>
<spring:bind path="command.formData['password']">
<tr><td>Password:</td><td><input type=password size=15 name=password></td></tr>
</spring:bind>
<tr><td colspan=2 align=center><input type=submit value=SingOn></td></tr>
</table>
</form>
</center>
</body>
</html>
--- hashCommand.java ---
import java.util.*;
public class hashCommand {
private HashMap formData;
public hashCommand() {
formData=new HashMap();
}
public void setFormData(HashMap formData) {
this.formData=formData;
}
public HashMap getFormData() {
return this.formData;
}
}
--- signonFormController.java ---
import org.springframework.validation.*;
import org.springframework.web.servlet.*;
import org.springframework.web.servlet.mvc.*;
import org.springframework.web.servlet.view.*;
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()\r\n");
HashMap formData=((hashCommand)command).getFormData();
log.debug("signonFormController.java command data - "+formData+"\r\n");
return new ModelAndView("welcome");
}
/*
protected Object formBackingObject(HttpServletRequest request) {
return new hashCommand();
}
*/
}
I see this entry in my log file:
2005-10-11 23:07:15,992 DEBUG: signonFormController.java command data - {}
It looks like a spring binding problem. Request parameters didn't reach my commandClass for some reason, I got am empty hashmap which supposed to have 2 keys from form input according to log output. Why? Did I do anything wrong?
Thanks,
Vincent Chen