我有一个简单的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"
。
这怎么可能发生,我做得不好?