0

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


我自己想通了。这是正确的代码:

DROP TRIGGER trLoadingOvertime
GO
CREATE TRIGGER trLoadingOvertime
ON trailerScheme
FOR INSERT AS
IF EXISTS (SELECT expectedFinishTime, finishTime
FROM inserted
WHERE DATEDIFF(mi, expectedFinishTime, finishTime) > 15)
BEGIN
DECLARE @id INT
DECLARE @exFTime DATETIME
DECLARE @fTime DATETIME
DECLARE @delay INT

SET @id = (SELECT trailerSchemeID FROM inserted)
SET @exFTime = (SELECT expectedFinishTime FROM inserted)
SET @fTime = (SELECT finishTime FROM inserted)
SET @delay = (SELECT DATEDIFF(mi, @exFTime, @fTime))

INSERT INTO errorTable VALUES(@id, @delay)

END

我试图插入,但问题是这个触发器是由更新调用的,因此插入的是空的。

4

1 回答 1

0

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

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

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


顺便提一句。您是否知道您在 Spring 中使用了一些非常古老的东西 :)?现在处理程序是通过@Controller@RequestMapping注释完成的。如果您是 Spring 新手,请查看 Spring 文档和Greenhouse 参考项目

于 2013-05-31T00:18:38.000 回答