Exception struts 2平铺无此定义异常

Exception 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>

我在使用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>
<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中,它的设置如下
。很抱歉造成误解。