org.apache.tiles.util.TilesIOException:JSPException 包括路径“/login.jsp”

我是瓷砖和 strut2 的新手。我无法理解,当我在 login.jsp 页面中使用 HTML 标记时,它可以正常工作,但同时如果我在 login.jsp 中的 struts 标记中编码,则会出现错误。为什么会发生这种情况我无法理解。下面给出了以下代码和错误..请帮助我

HTTP 状态 500 - 内部服务器错误

类型异常报告

消息内部服务器错误

描述服务器遇到一个内部错误,阻止它完成这个请求。

例外

javax.servlet.ServletException:执行标记时出错:JSPException,包括路径“/baseLayout.jsp”。

根本原因

org.apache.tiles.TilesException:JSPException,包括路径“/baseLayout.jsp”。

根本原因

org.apache.tiles.util.TilesIOException:JSPException,包括路径“/baseLayout.jsp”。

根本原因

org.apache.tiles.util.TilesIOException:JSPException,包括路径“/login.jsp”。

根本原因

找不到 Struts 调度程序。这通常是由于使用没有关联过滤器的 Struts 标签造成的。 Struts 标记仅在请求通过其 servlet 过滤器时可用,该过滤器初始化此标记所需的 Struts 调度程序。 - [未知位置]

note GlassFish Server Open Source Edition 4.1 日志中提供了异常的完整堆栈跟踪及其根本原因。

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" 
   xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
   xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
   http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
   id="WebApp_ID" version="2.5">
   <display-name>Struts2Example15</display-name>

   <context-param>
   <param-name>
      org.apache.tiles.impl.BasicTilesContainer.DEFINITIONS_CONFIG
   </param-name>
   <param-value>
      /WEB-INF/tiles.xml
   </param-value>
   </context-param>

   <listener>
   <listener-class>
      org.apache.struts2.tiles.StrutsTilesListener
   </listener-class>
   </listener>

    <welcome-file-list>
      <welcome-file>index.jsp</welcome-file>
   </welcome-file-list>

   <filter>
   <filter-name>struts2</filter-name>
   <filter-class>
   org.apache.struts2.dispatcher.FilterDispatcher
   </filter-class>
   </filter>

   <filter-mapping>
      <filter-name>struts2</filter-name>
      <url-pattern>/*</url-pattern>
   </filter-mapping>

</web-app>

struts.xml

<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>

    <!-- Configuration for the default package. -->
    <package name="default" extends="struts-default">
        <result-types>
            <result-type name="tiles" class="org.apache.struts2.view.tiles.TilesResult"/> 
            </result-types>  
        <action name="loginAction" class="package_entry.loginAction" method="execute">
            <result name="getin">welcome.jsp</result>
             <result name="user_login">user_login.jsp</result>

        </action>

    </package>
</struts>

索引.jsp

<%@page contentType="text/html" pageEncoding="UTF-8"%>
        <%@page language="java"%>
    <%@taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles" %>
    <tiles:insertTemplate template="/baseLayout.jsp">
        <tiles:putAttribute name="tiles" value="this is tes framework" type="string"/> 
            <tiles:putAttribute name="header" value="/header.jsp" /> 
            <tiles:putAttribute name="menu" value="/menu.jsp" /> 
            <tiles:putAttribute name="body" value="/body.jsp" /> 
            <tiles:putAttribute name="footer" value="/footer.jsp" />   
    </tiles:insertTemplate>

菜单.jsp

<%@taglib uri="/struts-tags" prefix="s"%>
<a href="loging.jsp">Login</a><br>
<a href="registring.jsp">Register</a><br>
<a href="contacting.jsp">Contact</a><br>

日志记录.jsp

<%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles" %>
<tiles:insertDefinition name="login.def"/>

瓷砖.xml

<tiles-definitions>

<definition name="baseLayout" template="/baseLayout.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>

<definition name="login.def" extends="baseLayout">
<put-attribute name="title"  value="Login form"/>
<put-attribute name="body"   value="/login.jsp"/>
</definition>

<definition name="register.def" extends="baseLayout">
<put-attribute name="title"  value="Register"/>
<put-attribute name="body"   value="/register.jsp"/>
</definition>

<definition name="contact.def" extends="baseLayout">
<put-attribute name="title"  value="contact"/>
<put-attribute name="body"   value="/contact.jsp"/>
</definition>

</tiles-definitions>

登录.jsp

<%@taglib uri="/struts-tags" prefix="s"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
        <s:form>
            <s:textfield name="email_id" label="Email"/>
            <s:password name="password" label="Password"/>
            <s:submit value="login"/>
        </s:form>
    </body>
</html>
stack overflow org.apache.tiles.util.TilesIOException: JSPException including path '/login.jsp'
原文答案

答案:

作者头像

很可能您必须为每个定义添加相对路径

例如改变

value="/login.jsp"/>

value="/WEB-INF/path/to/your/login.jsp"/>

所以:

<definition name="login.def" extends="baseLayout">
   <put-attribute name="title"  value="Login form"/>
   <put-attribute name="body"   value="/WEB-INF/path/to/your/login.jsp"/>
</definition>

此外,我在任何地方都看不到您的图块渲染和配置器。您是否在 pom 中添加了瓷砖?