我还在尝试熟悉Tiles,我之前在Struts 1.x中使用过没有任何问题,但Spring MVC并非如此。使用Struts我知道你必须创建动作或使用它的前向标记通过链接到达tile中定义的页面,我认为使用Spring你同样需要使用一个控制器。但是,它似乎没有找到我的tile定义,因为每当控制器执行时我都会收到此错误:
2014年7月17日上午11:21:07 org.springframework.web.servlet.DispatcherServlet noHandlerFound 警告:在> DispatcherServlet中找不到带有URI [/ BudgeAllocatorWeb / home]的HTTP请求的映射,其名称为“spring-mvc”
我的控制器非常简单,因为我只是想学习并弄清楚它是如何工作的:
@Controller
@RequestMapping("/login")
public class LoginController {
@RequestMapping(method=RequestMethod.GET)
public String login(ModelMap map) {
return "home";
}
}
我的tiles-def.xml看起来像:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE tiles-definitions PUBLIC
"-//Apache Software Foundation//DTD Tiles Configuration 2.0//EN"
"http://tiles.apache.org/dtds/tiles-config_2_0.dtd">
<tiles-definitions>
<definition name="base" template="/pages/base_layout/layout.jsp">
<put-attribute name="title" value="" />
<put-attribute name="header" value="/pages/base_layout/header.jsp" />
<put-attribute name="menu" value="/pages/base_layout/menu.jsp" />
<put-attribute name="body" value="" />
<put-attribute name="footer" value="/pages/base_layout/footer.jsp" />
</definition>
<definition name="home" extends="base">
<put-attribute name="title" value="Budgeter" />
<put-attribute name="body" value="/pages/home.jsp" />
</definition>
</tiles-definitions>
我的spring-mvc-servlet XML文件:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<context:component-scan base-package="controllers" />
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!-- <property value="/" name="prefix" />
<property value=".jsp" name="suffix" /> -->
</bean>
<!-- Spring Tiles -->
<bean id="tilesviewResolver" class="org.springframework.web.servlet.view.tiles2.TilesViewResolver">
<property name="viewClass">
<value>
org.springframework.web.servlet.view.tiles2.TilesView
</value>
</property>
</bean>
<bean id="tilesConfigurer" class="org.springframework.web.servlet.view.tiles2.TilesConfigurer">
<property name="definitions">
<list>
<value>/WEB-INF/tiles-def.xml</value>
</list>
</property>
</bean>
</beans>
所以我的控制器返回“home”,打算点击我的tiles-def中定义的“home”。它适用于常规页面,但不适用于tile定义。这里有什么我想念的吗?
答案 0 :(得分:0)
删除InternalViewResolver
或使用resolver.setOrder(x)
向解析程序设置订单。尝试删除此代码
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!-- <property value="/" name="prefix" />
<property value=".jsp" name="suffix" /> -->
</bean>
这样只会使用切片视图解析器。