[异常]在Tiles中我用Definition in jsp page方式时,用extends时异常,同志们帮看看,谢了!
据项目需求:我需要在jsp程序中动态定义Tiles的definition.
经过测试当我不使用extends或者<tiles:put name="body" value="strongpp.wangshang.body" />
这样的转到别一个definition(如:strongpp.wangshang.body)时程序正常运行。或者我使用tiles-defs.xml
这样的配置文件定义时,程序都是正常运行。
使用了extends和<tiles:put name="body" value="strongpp.wangshang.body" />的程序及配置如下:
我的definition的JSP程序如下:
<%@ taglib uri="/WEB-INF/struts-tiles.tld" prefix="tiles" %>
<tiles:definition id="strongpp.portal.masterPage" page="/layouts/classicLayout.jsp" >
<tiles:put name="titles" value="Tiles 1.1 Examples" />
<tiles:put name="header" value="/portal/wangshang/common/header.jsp" />
<tiles:put name="footer" value="/portal/wangshang/common/footer.jsp" />
<tiles:put name="body" value="/portal/wangshang/common/body.jsp" />
</tiles:definition>
<tiles:definition extends="strongpp.portal.masterPage" id="strongpp.wangshang.mainLayout">
<tiles:put name="titles" value="12345网上受理" />
<tiles:put name="header" value="/portal/wangshang/common/header.jsp" />
<tiles:put name="body" value="strongpp.wangshang.body" />
<tiles:put name="footer" value="/portal/wangshang/common/footer.jsp" />
</tiles:definition>
<tiles:definition controllerUrl="/portal/myPortal.do" id="strongpp.wangshang.body" page="/layouts/cloumslayout.jsp" >
<tiles:put name="numCols" value="2" />
<tiles:putList name="list0">
<tiles:add value="/portal/wangshang/reXianZaiBao.jsp" />
<tiles:add value="/portal/wangshang/shouLi.jsp" />
<tiles:add value="/portal/wangshang/downloads.jsp" />
</tiles:putList>
<tiles:putList name="labels0">
<tiles:add value="热线摘报" />
<tiles:add value="网上受理" />
<tiles:add value="下载中心" />
</tiles:putList>
</tiles:definition>
使用的JSP程序index.jsp如下所示:
<%@ taglib uri="/WEB-INF/struts-tiles.tld" prefix="tiles" %>
<%@ include file="/WEB-INF/definitions/definition.jsp"%>
<html>
<head>
<title>
index2
</title>
</head>
<body bgcolor="#ffffff">
<tiles:insert beanName="strongpp.wangshang.body" beanScope="request"/>
</body>
</html>
异常:
javax.servlet.jsp.JspException: Can't get definitions factory from context.
at org.apache.struts.taglib.tiles.util.TagUtils.getComponentDefinition(TagUtils.java:350)
at org.apache.struts.taglib.tiles.DefinitionTag.doStartTag(DefinitionTag.java:261)
at jsp_servlet.__index._jspService(__index.java:322)
at weblogic.servlet.jsp.JspBase.service(JspBase.java:33)
at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java:1053)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:387)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:431)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:305)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:6310)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:317)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:118)
at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:3622)
at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2569)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:197)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:170)
>