PDA

View Full Version : Why this SimpleFormController test failed?


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