Java、Spring、Apache Tiles错误:无法解析名为';指数';在名为';调度员';
我是Tiles和SpringMVC的新手(我查看了几个类似的问题,但没有找到“我的问题”的解决方案) 控制器:Java、Spring、Apache Tiles错误:无法解析名为';指数';在名为';调度员';,java,spring-mvc,apache-tiles,Java,Spring Mvc,Apache Tiles,我是Tiles和SpringMVC的新手(我查看了几个类似的问题,但没有找到“我的问题”的解决方案) 控制器: @Controller public class IndexController { @RequestMapping("/index") public String index(){ return "index"; } } 我的“general.xml”包含瓷砖定义: <tiles-definitions> <definit
@Controller
public class IndexController {
@RequestMapping("/index")
public String index(){
return "index";
}
}
我的“general.xml”包含瓷砖定义:
<tiles-definitions>
<definition name="common" template="/WEB-INF/layout/classic.jsp">
<put-attribute name="footer" value="/WEB-INF/layout/footer.jsp" />
</definition>
<definition name="index" extends="common">
<put-attribute name="title" value="My First Application" />
<put-attribute name="body" value="/WEB-INF/jsp/index.jsp" />
</definition>
dispatcher-servlet.xml:
<bean id="tilesConfigurer" class="org.springframework.web.servlet.view.tiles3.TilesConfigurer">
<property name="definitions">
<list>
<value>/WEB-INF/defs/general.xml</value>
</list>
</property>
</bean>
<bean id="viewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.tiles3.TilesView"/>
</bean>
/WEB-INF/defs/general.xml
web.xml
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>*.html</url-pattern>
<url-pattern>*.htm</url-pattern>
<url-pattern>*.json</url-pattern>
<url-pattern>*.xml</url-pattern>
</servlet-mapping>
调度员
org.springframework.web.servlet.DispatcherServlet
1.
调度员
*.html
*.htm
*.json
*.xml
问题非常简单。
将web.xml替换为
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
<display-name>my-first-app</display-name>
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
我的第一个应用程序
调度员
org.springframework.web.servlet.DispatcherServlet
1.
调度员
/
我还向pom添加了jstl依赖项
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
javax.servlet
jstl
1.2
在这些更改之后,对
localhost:8080/index
的请求正确地呈现了相应的响应我今天也遇到了同样的问题。我在春天也是新手,所以我不知道从哪里开始。经过漫长的一天,我终于找到了答案:
我的default.xml文件错误。我做了一些手工重构,这造成了所有的麻烦。这是一个错误的例子:
<definition name="tos.base" template="/WEB-INF/templates/default.jsp">
<put-attribute name="includes" value="" ></put-attribute>
<put-attribute name="title" value="Title" ></put-attribute>
<put-attribute name="header" value="/WEB-INF/tiles/header.jsp"></put-attribute>
<put-attribute name="content" value="/WEB-INF/tiles/content.jsp"></put-attribute>
<put-attribute name="footer" value="/WEB-INF/tiles/footer.jsp"></put-attribute>
</definition>
<definition name="home" extends="tos.base">
<put-attribute name="title" value="Homepage" ></put-attribute>
<put-attribute name="content" value="/WEB-INF/tiles/home.jsp"></put-attribute>
</definition>
<definition name="current" extends="to.base">
<put-attribute name="title" value="Current" ></put-attribute>
<put-attribute name="content" value="/WEB-INF/tiles/current.jsp"></put-attribute>
</definition>
正如您所看到的,在上一个定义“extends”值中,我的值是错误的。
我发现这种从tiles3.TilesViewResolver降级到tiles2.TilesViewResolver的情况,并提供了一条更有用的错误消息。尝试将
IndexController.index()
的返回值从“/WEB-INF/jsp/index.jsp”
更改为“index”
。这对我很有用:
@RequestMapping("/index")
public String index() {
return "index";
}
我也有同样的问题。
尝试在tiles配置文件中使用正确版本的DTD
也在tiles定义文件general.xml中
使用平铺:插入属性而不是平铺:添加属性
<tile:insertAttribute name="body"/>
<br />
<tile:insertAttribute name="footer" />
问题在于项目位置
jetty、ApacheTiles和spring的视图解析器的组合在该位置有空间时不起作用
例如:项目位置-D:\folder whitespace\your\u项目
将引发上述错误-无法在名为“dispatcher”的servlet中解析名为“index”的视图
解决方案-请将项目位置更改为没有空格的路径。项目路径中可能有空格:
你看过本教程了吗?没有,我已经学习了另一个教程,但不明白错误出在哪里了。你有什么错误,或者在GitHub上编写代码,或者其他什么,我可以试试吗?非常感谢,这一定是一些愚蠢的错误,但我不知道Madery是在哪里用Maven进行干净的编译的。它对我来说对Tomcat和embedded Jettyok和jstl都有效——它在VMware vFabric tc Server Developer Edition v2.9-config服务器上的工作,但在jetty上仍然不起作用……而且我也没有更改我的servlet映射,所以问题一定在其他地方——如果您遵循我更新的答案,代码也应该在jetty上工作。我验证了很多次这很奇怪。。。您是否用最新的更改更新了GitHub存储库,以便我可以再次查看?GirHub存储库已更新。正如我所说,我的(和你的)代码在tomcat上工作得很好,但在jetty上尝试时仍然有错误
<tile:insertAttribute name="body"/>
<br />
<tile:insertAttribute name="footer" />