我对Spring MVC视图解析器不太熟悉。我正在尝试从我的控制器返回一个JSP。
我的Controller方法正在正确执行,但在返回视图时,我收到404 -The requested resource is not available
错误。
这是我的servlet-context.xml
文件
<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>
这就是我如何定义资源结构
webapp
--WEB-INF
--views
--shop
--common
--cart
myjsp.jsp
这就是我从控制器返回JSP视图的方法
private final static String MYVIEW="shop/common/cart/myjsp";
@RequestMapping(value={"/shop/myMethod.html"}, method = RequestMethod.GET)
public String myMethod(HttpServletRequest request, Model model){
return MYVIEW;
}
这是我的应用主页网址
http://localhost:7777/my-shop/shop/
不知道我在做什么。
修改的 我们正在使用带有弹簧的Tiles并且已经看到了这些附加信息
<beans:bean id="viewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver">
<beans:property name="viewClass">
<beans:value>org.springframework.web.servlet.view.tiles2.TilesView</beans:value>
</beans:property>
</beans:bean>
<beans:bean id="tilesConfigurer" class="org.springframework.web.servlet.view.tiles2.TilesConfigurer">
<beans:property name="definitions">
<beans:list>
<beans:value>/WEB-INF/tiles/tiles-admin.xml</beans:value>
<beans:value>/WEB-INF/tiles/tiles-shop.xml</beans:value>
</beans:list>
</beans:property>
</beans:bean>
不确定我如何添加其他视图解析器?
错误
请求的资源(/my-shop/WEB-INF/views/shop/common/cart/myjsp.jsp)
不可用
我记下了一个更奇怪的事情,WEB-INF/views
下的JSP很少可以访问,但是当我在同一个位置放置新的JSP时,它不起作用并给出相同的错误。
答案 0 :(得分:2)
我可以帮助你抓住一些问题,我发现了难度
这是我的servlet-context.xml的一部分
<context:component-scan base-package="mypath"/>
<bean id="jspViewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver"
p:prefix="/WEB-INF/jsp/"
p:suffix=".jsp" />
答案 1 :(得分:2)
仅供参考,如果您的视图出现错误,那么即使控制器/视图/ JSP文件存在,您也会获得404。尝试增加Spring日志记录级别或附加远程调试器。我上周遇到了同样的问题,404起初误导了。
答案 2 :(得分:1)
就我而言,Maven-&gt; Update项目解决了这个问题!我知道它相对无关紧要,但有一天它可能会有人!
答案 3 :(得分:0)
您正在尝试使用多个视图解析器;但是你没有指定订单。我猜这就是为什么它给404.试试这个:
注意:具有最高顺序的ViewResolver是链中的最后一个解析器。
<beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<beans:property name="prefix" value="/WEB-INF/views/" />
<beans:property name="suffix" value=".jsp" />
<beans:property name="order" value = "0" />
</beans:bean>
<beans:bean id="viewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver">
<beans:property name="viewClass">
<beans:value>org.springframework.web.servlet.view.tiles2.TilesView</beans:value>
</beans:property>
<beans:property name="order" value = "1" />
</beans:bean>