Exception struts 2平铺无此定义异常
我在使用struts 2和tiles时遇到了这个异常 org.apache.tiles.definition.NoSuchDefinitionException:/index.jspException struts 2平铺无此定义异常,exception,struts2,tiles2,Exception,Struts2,Tiles2,我在使用struts 2和tiles时遇到了这个异常 org.apache.tiles.definition.NoSuchDefinitionException:/index.jsp <%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html>
<%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title></title>
</head>
<body>
<tiles:insertAttribute name="header"/>
<tiles:insertAttribute name="footer"/>
</body>
</html>
//tiles.xml
<tiles-definitions>
<definition name="baseLayout" template="/index.jsp">
<put-attribute name="title" value="/Template" />
<put-attribute name="header" value="/Header.jsp" />
<put-attribute name="menu" value="/Menu.jsp" />
<put-attribute name="body" value="/body.jsp" />
<put-attribute name="footer" value="/Footer.jsp" />
</definition>
<tiles-definitions>
//index.jsp
<%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title></title>
</head>
<body>
<tiles:insertAttribute name="header"/>
<tiles:insertAttribute name="footer"/>
</body>
</html>
//web.xml
<listener>
<listener-class>org.apache.struts2.tiles.StrutsTilesListener</listener-class>
</listener>
<context-param>
<param-name>org.apache.tiles.impl.BasicTilesContainer.
DEFINITIONS_CONFIG</param-name>
<param-value>/WEB-INF/tiles.xml</param-value>
</context-param>
org.apache.struts2.tiles.StrutsTilesListener
org.apache.tiles.impl.basictiles容器。
定义\u配置
/WEB-INF/tiles.xml
//struts.xml
<package name="default" namespace="/test" extends="struts-default">
<result-types>
<result-type name="tiles" class="org.apache.struts2.views.tiles.TilesResult" />
</result-types>
<action name="login" class="com.medics.action.LoginAction">
<result name="SUCCESS" type="tiles">/index.jsp</result>
</action>
</package>
/index.jsp
我找了很多,但什么也没找到
org.apache.tiles.definition.NoSuchDefinitionException: /index.jsp
表示没有平铺定义,也就是说没有名称“/index.jsp”的定义
使用struts和tiles时。。。您的请求进入struts,然后进入tiles,tiles在其中构成视图,因此您不应该有任何称为“anything.jsp”的tiles定义
那就换一个吧
<result name="SUCCESS" type="tiles">/index.jsp</result>
/index.jsp
与
baseLayout/result>
现在问题解决了。。。我会重命名index.jsp、template.jsp(我认为这样比较容易混淆),为什么有一个名为“/template”的put属性
现在为了解决这个问题,我建议您将struts2结果目标更改为“baseLayout”,但这可能不是您的意思,因此您可能希望对新页面使用baseLayout定义,因此请添加一个新定义:
<definition name="index" extends="baseLayout">
<put-attribute name="title" value="My Title for Index" />
<put-attribute name="body" value="/index.jsp" />
</definition>
现在,上面的代码将在defaultTemplate中获取该值,并添加(或者如果名称相同,则重写)为index.jsp创建页面的基础模板中的内容,现在struts.xml应该具有
<result name="SUCCESS" type="tiles">index</result>
索引
我今天遇到了这个问题。
虽然这是一个很久以前的问题,但我发现解决方案如下:
/index.jsp
只需将类型
tiles
替换为dispatcher
对我来说就行了。成功了。非常感谢,你为我节省了一天@“为什么你有一个名为“/Template”的put属性?它必须是“Template”,一个静态字符串属性dispatcher
是result的默认类型,因此不需要显式定义它。在我的父struts.xml中,它的设置如下
。很抱歉造成误解。