Spring Controller未按预期工作 - 未正确管理返回视图名称

时间:2014-09-05 01:01:36

标签: spring spring-mvc controller

我有一个简单的Spring MVC应用程序。

我的控制器有一个请求映射定义,例如:

@Controller
public class TestController {
....

@RequestMapping(value = "/addMerchant", method = RequestMethod.POST)
public String addMerchant(Model model) {
    logger.info("add merchant is called");  
    return "entrance";
}

....
}

我将视图解析器定义为:

<beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" >
    <beans:property name="prefix" value="/WEB-INF/views/" />
    <beans:property name="suffix" value=".jsp" />
</beans:bean>

我简单的html表单是:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://www.springframework.org/tags" prefix="s" %>
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="sf" %>
<html>
<head>
<title>Entrance</title>
</head>
<body>
    <s:url var="addMerchantUrl" value="/addMerchant"/>
    <sf:form method="post" action="${addMerchantUrl}" commandName="merchant">
        <fieldset>
            <table>
                <tr>
                    <td><label for="name">Name</label></td>
                    <td><input id="name" name="name" type="text" /></td>
                </tr>
                <tr>
                    <td colspan="2"><input name="commit" type="submit" value="Add Merchant" /></td>
                </tr>
            </table>
        </fieldset>
    </sf:form>      
</body>
</html>

所以我期望的是,当我向URL&#34; POST&#34;发出addMerchant请求时,它只会发布一个日志(添加商家被调用),然后返回作为观点&#34;入口&#34;这基本上是"/views/entrance.jsp"

问题是,当我向"/addMerchant"触发POST请求时,它成功,它已成功定向到上面的addMerchant方法。但是,虽然"addMerchant"方法返回的视图名称是&#34; entry&#34;,但由于找不到addMerchant.jsp,我在浏览器端出现错误。

我附加了一个拦截器(Spring&#39; s HandlerInterceptorAdapter)来观察postHandle,我观察到的是传递给postHandle的视图名称信息不是&#34;入口&#34;,它是"addMerchant"

这怎么可能发生,我做得不好?

0 个答案:

没有答案