org.apache.tiles.util.TilesIOException:包含路径'/login.jsp'的JSPException

问题描述 投票:2回答:1

我是瓷砖和strut2的新手。我无法理解当我在login.jsp页面中使用html标签然后它工作正常但同时如果我在login.jsp中的struts标签中编码然后它给出错误。为什么这发生我不能了解。下面给出了以下代码和错误..请帮助我

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

类型异常报告

messageInternal服务器错误

description服务器遇到内部错误,导致无法完成此请求。

例外

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

根本原因

org.apache.tiles.TilesException:包含路径'/baseLayout.jsp'的JSPException。

根本原因

org.apache.tiles.util.TilesIOException:包含路径'/baseLayout.jsp'的JSPException。

根本原因

org.apache.tiles.util.TilesIOException:包含路径'/login.jsp'的JSPException。

根本原因

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

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

veb.hml

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

的index.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>

引入了menu.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>

login.jsp的

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

tiles.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>

login.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>
struts2 tiles
1个回答
0
投票

很可能你必须添加每个定义的相对路径

例如改变

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中添加瓷砖?

© www.soinside.com 2019 - 2024. All rights reserved.