在我的应用程序中,其中一个jsp成功地通过命令对象将输入参数传递给我的控制器。但是我对另一个jsp及其控制器使用相同的方法,它不起作用。我从未为任何其他JSP工作过。
以下是代码 - spring xml
<bean id="uploadController"
class="com.UploadController">
<property name="commandName">
<value>formBean</value>
</property>
<property name="commandClass">
<value>
com..TemplateDownloadFormBean
</value>
</property>
<property name="formView">
<value>uploadTemplates</value>
</property>
<property name="successView">
<value>uploadSuccess</value>
</property>
</bean>
</beans>
控制器
public class UploadController extends SimpleFormController {
private static final long serialVersionUID = -3208409086358916855L;
private static final Logger logger = Logger
.getLogger(UploadController.class);
protected ModelAndView onSubmit(HttpServletRequest request,
HttpServletResponse response, Object command, BindException errors)
throws Exception {
logger.debug("Entered UploadController - OnSubmit");
TemplateDownloadFormBean formBean = (TemplateDownloadFormBean) command;
logger.debug(formBean.getSearchString());
Enumeration en = request.getAttributeNames();
while (en.hasMoreElements()) {
logger.debug(en.nextElement());
}
return new ModelAndView(getSuccessView());
}
JSP
<html xmlns="http://www.w3.org/1999/xhtml">
<body>
<form action="uploadTemplates.do" method="post"
enctype="multipart/form-data">
<table>
<tr>
<td><spring:hasBindErrors name="formBean">
<c:forEach var="errMsgObj" items="${errors.allErrors}">
<div align="center" class="errorStyle"><spring:message
code="${errMsgObj.code}" /></div>
</c:forEach>
</spring:hasBindErrors></td>
</tr>
<tr>
<spring:bind path="formBean.searchString">
<td align="left"><input type="text" name="searchString" /></td>
</spring:bind>
</tr>
<tr>
<td><input type="submit" value="SearchTemplate"
name="SearchTemplate" /></td>
</tr>
</table>
</form>
</body>
</html>
这个相同的声明结构适用于同一应用程序中的其他JSP。但在这里失败了。如果有人能告诉我我在这里做错了什么。
答案 0 :(得分:0)
您应该使用Spring form
标记,因为它们能够呈现正确的<input>
元素名称。你的错误可能在这里(注意不同的名字):
<input type="text" name="formBean.searchString" />
标签<spring:bind>
在您的情况下绝对没用。该标记具有不同的用途,与您的用例无关。
顺便说一下。你知道你在Spring :)中使用了一些相当旧的东西吗?现在,处理程序通过@Controller
和@RequestMapping
注释完成。如果您不熟悉Spring,请查看Spring文档和Greenhouse reference project。