我在学习Tiles框架过程,目前碰到下面这个难缠的问题,请各位给予解答。
我建立好了模板页,并且编写好了Tiles框架的配置文件tiles-defs.xml,并且在struts-config中加入的加载插件的代码,tiles-defs.xml文件如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE tiles-definitions PUBLIC "-//Apache Software Foundation//DTD Tiles Configuration 1.1//EN"
"http://jakarta.apache.org/struts/dtds/tiles-config_1_1.dtd">
<tiles-definitions>
<definition name="defaultLayout" path="/WEB-INF/TilesLayout/tilesLayout.jsp">
<put name="logo" value="/WEB-INF/TilesLayout/top.jsp"></put>
<put name="nav" value="/WEB-INF/TilesLayout/left.jsp"></put>
<put name="content" value="/WEB-INF/TilesLayout/content.jsp"></put>
<put name="bottom" value="/WEB-INF/TilesLayout/Author.jsp"></put>
</definition>
<definition name="userRegister" extends="defaultLayout">
<put name="content" value="/admin/userRegister.jsp"></put>
</definition>
</tiles-definitions>
我设计了一个用户登录界面,当用户输入的用户名和密码正确时,则显示Tiles组件:defaultLayout,若不成功则显示错误页面,其struts-config.xml中针对该用户请求的的配置代码如下:
<action
attribute="userForm"
input="/admin/login.jsp"
name="userForm"
path="/userLogin"
scope="request"
type="cn.edu.zjut.Action.UserLoginAction"
validate="false">
<set-property property="cancellable" value="false" />
<forward name="loginSuccess" path="defaultLayout" />
<forward name="loginFailure" path="/admin/loginFailure.html" />
</action>
但是,当我输入正确的用户名和密码时,页面跳转之时却提示以下错误信息:
description The server encountered an internal error () that prevented it from fulfilling this request.exception javax.servlet.ServletException: java.lang.IllegalArgumentException: Path defaultLayout does not start with a "/" character
org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:286)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
cn.edu.zjut.Servlet.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:23)
root cause java.lang.IllegalArgumentException: Path defaultLayout does not start with a "/" character
org.apache.struts.chain.commands.servlet.PerformForward.handleAsForward(PerformForward.java:107)
org.apache.struts.chain.commands.servlet.PerformForward.perform(PerformForward.java:96)
org.apache.struts.chain.commands.AbstractPerformForward.execute(AbstractPerformForward.java:54)
org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51)
org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:304)
org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
cn.edu.zjut.Servlet.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:23)
note The full stack trace of the root cause is available in the Apache Tomcat/6.0.26 logs.
各位请帮忙解决,这个问题已经困扰我很久了,小弟在这先谢过了!
我建立好了模板页,并且编写好了Tiles框架的配置文件tiles-defs.xml,并且在struts-config中加入的加载插件的代码,tiles-defs.xml文件如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE tiles-definitions PUBLIC "-//Apache Software Foundation//DTD Tiles Configuration 1.1//EN"
"http://jakarta.apache.org/struts/dtds/tiles-config_1_1.dtd">
<tiles-definitions>
<definition name="defaultLayout" path="/WEB-INF/TilesLayout/tilesLayout.jsp">
<put name="logo" value="/WEB-INF/TilesLayout/top.jsp"></put>
<put name="nav" value="/WEB-INF/TilesLayout/left.jsp"></put>
<put name="content" value="/WEB-INF/TilesLayout/content.jsp"></put>
<put name="bottom" value="/WEB-INF/TilesLayout/Author.jsp"></put>
</definition>
<definition name="userRegister" extends="defaultLayout">
<put name="content" value="/admin/userRegister.jsp"></put>
</definition>
</tiles-definitions>
我设计了一个用户登录界面,当用户输入的用户名和密码正确时,则显示Tiles组件:defaultLayout,若不成功则显示错误页面,其struts-config.xml中针对该用户请求的的配置代码如下:
<action
attribute="userForm"
input="/admin/login.jsp"
name="userForm"
path="/userLogin"
scope="request"
type="cn.edu.zjut.Action.UserLoginAction"
validate="false">
<set-property property="cancellable" value="false" />
<forward name="loginSuccess" path="defaultLayout" />
<forward name="loginFailure" path="/admin/loginFailure.html" />
</action>
但是,当我输入正确的用户名和密码时,页面跳转之时却提示以下错误信息:
description The server encountered an internal error () that prevented it from fulfilling this request.exception javax.servlet.ServletException: java.lang.IllegalArgumentException: Path defaultLayout does not start with a "/" character
org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:286)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
cn.edu.zjut.Servlet.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:23)
root cause java.lang.IllegalArgumentException: Path defaultLayout does not start with a "/" character
org.apache.struts.chain.commands.servlet.PerformForward.handleAsForward(PerformForward.java:107)
org.apache.struts.chain.commands.servlet.PerformForward.perform(PerformForward.java:96)
org.apache.struts.chain.commands.AbstractPerformForward.execute(AbstractPerformForward.java:54)
org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51)
org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:304)
org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
cn.edu.zjut.Servlet.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:23)
note The full stack trace of the root cause is available in the Apache Tomcat/6.0.26 logs.
各位请帮忙解决,这个问题已经困扰我很久了,小弟在这先谢过了!
先改下,试试<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE tiles-definitions PUBLIC "-//Apache Software Foundation//DTD Tiles Configuration 1.1//EN"
"http://jakarta.apache.org/struts/dtds/tiles-config_1_1.dtd">
<tiles-definitions>
<definition name="defaultLayout" path="/WEB-INF/TilesLayout/tilesLayout.jsp">
<put name="logo" value="/WEB-INF/TilesLayout/top.jsp"></put>
<put name="nav" value="/WEB-INF/TilesLayout/left.jsp"></put>
<put name="content" value="${content}"/>
<put name="bottom" value="/WEB-INF/TilesLayout/Author.jsp"></put>
</definition>
<definition name="userRegister" extends="defaultLayout">
<put name="content" value="/admin/userRegister.jsp"></put>
</definition>
<definition name="successShow" extends="defaultLayout">
<put name="content" value="/WEB-INF/TilesLayout/content.jsp"></put>
</definition>
</tiles-definitions>
<action
attribute="userForm"
input="/admin/login.jsp"
name="userForm"
path="/userLogin"
scope="request"
type="cn.edu.zjut.Action.UserLoginAction"
validate="false">
<set-property property="cancellable" value="false" />
<forward name="loginSuccess" path="successShow" />
<forward name="loginFailure" path="/admin/loginFailure.html" />
</action>
试试呢
好久没用titles了