时间:2013-05-30 23:19:57

标签: spring-mvc

在我的应用程序中,其中一个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。但在这里失败了。如果有人能告诉我我在这里做错了什么。

1 个答案:

答案 0 :(得分:0)

您应该使用Spring form标记,因为它们能够呈现正确的<input>元素名称。你的错误可能在这里(注意不同的名字):

<input type="text" name="formBean.searchString" />

标签<spring:bind>在您的情况下绝对没用。该标记具有不同的用途,与您的用例无关。


顺便说一下。你知道你在Spring :)中使用了一些相当旧的东西吗?现在,处理程序通过@Controller@RequestMapping注释完成。如果您不熟悉Spring,请查看Spring文档和Greenhouse reference project