Spring 弹簧&x27;s控制器未按预期工作-返回的视图名称管理不正确
我有一个简单的SpringMVC应用程序 我的控制器有一个请求映射定义,例如:Spring 弹簧&x27;s控制器未按预期工作-返回的视图名称管理不正确,spring,spring-mvc,controller,Spring,Spring Mvc,Controller,我有一个简单的SpringMVC应用程序 我的控制器有一个请求映射定义,例如: @Controller public class TestController { .... @RequestMapping(value = "/addMerchant", method = RequestMethod.POST) public String addMerchant(Model model) { logger.info("add merchant is called"); ret
@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“addMerchant
”发出POST
请求时,它只需发布一个日志(调用addMerchant),然后作为view“entry”返回,它基本上是“/views/entry.jsp”
问题是,当我成功触发对“/addMerchant”
的POST请求时,它会成功地定向到上面的addMerchant
方法。但是,尽管“addMerchant”
方法返回的视图名称是“entry”,但我在浏览器端遇到了一个错误,因为找不到addMerchant.jsp
我附加了一个拦截器(Spring的HandlerInterceptorAdapter
)来观察postHandle
,我观察到的是传递给postHandle
的视图名称信息不是“入口”,而是“addMerchant”
这怎么可能发生,我做得不对吗 你能把你的表单代码粘贴到/addMerchant上吗?我刚刚添加了表单代码,我刚刚试着运行你的代码,效果很好。再次尝试创建war,同时检查服务器日志中是否有任何错误?虽然我仍然不能确定根本原因,但我使代码按预期工作。问题是,我定义了一个方面“围绕”控制器方法,称为requestmapping,它只是注释掉方面定义,控制器开始正常工作。