问题描述
大家好我在freemarker的模板页中要使用struts2的标签这个是模板logindec.ftl<#assigns=JspTaglibs["/WEB-INF/struts-tags.tld"]><html><head><title>${title}</title>${head}<linkrel="stylesheet"href="/JMMS/template/styles/logindec.css"><linkrel="stylesheet"href="/JMMS/template/styles/header.css"></head><body><divid="header"><#include"/template/includes/header.html"></div><hr><divid="content"><@s.textfieldname="s"label="s"/>${body}</div><divid="footer"><#include"/template/includes/footer.html"></div></body></html>
我已经把struts-tags.ltd放在WEB-INF下了并且在web.xml下配置了<servlet><servlet-name>JspSupportServlet</servlet-name><servlet-class>org.apache.struts2.views.JspSupportServlet</servlet-class><load-on-startup>1</load-on-startup></servlet>
请求的页面是login.html<!DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"><html><head><metahttp-equiv="Content-Type"content="text/html;charset=UTF-8"><title>JMMS-login</title></head><body><divid="login"><table><tr><td><!--<@s.textfieldname="account"label="账户"/>--></td></tr><tr><td><!--<@s.textfieldname="password"label="密码"/>--></td></tr><tr><td><!--<@s.submitvalue="登录"/>--></td></tr></table></div></body></html>使用sitemesh做框架<?xmlversion="1.0"encoding="UTF-8"?><decoratorsdefaultdir="/WEB-INF/decorators"><!--主要页面模板--><decoratorname="main"page="main.ftl"><pattern>/*</pattern></decorator><!--登录页模板--><decoratorname="login"page="logindec.ftl"><pattern>/login/*</pattern></decorator></decorators>-------------------------------------------------------------------------------------------出错信息:Errorparsingincludedtemplatetemplate/xhtml/controlheader.ftlEncountered"?"atline25,column23.Wasexpecting:<ID>...-Class:freemarker.core.IncludeFile:Include.javaMethod:acceptLine:148-freemarker/core/Include.java:148:-1org.apache.struts2.components.UIBean.end(UIBean.java:515)org.apache.struts2.views.jsp.ComponentTagSupport.doEndTag(ComponentTagSupport.java:42)freemarker.ext.jsp.TagTransformModel$TagWriter.endEvaluation(TagTransformModel.java:313)freemarker.ext.jsp.TagTransformModel$TagWriter.afterBody(TagTransformModel.java:289)freemarker.core.Environment.visit(Environment.java:235)freemarker.core.UnifiedCall.accept(UnifiedCall.java:116)freemarker.core.Environment.visit(Environment.java:196)freemarker.core.MixedContent.accept(MixedContent.java:92)freemarker.core.Environment.visit(Environment.java:196)freemarker.core.Environment.process(Environment.java:176)freemarker.template.Template.process(Template.java:232)freemarker.ext.servlet.FreemarkerServlet.process(FreemarkerServlet.java:427)freemarker.ext.servlet.FreemarkerServlet.doGet(FreemarkerServlet.java:366)javax.servlet.http.HttpServlet.service(HttpServlet.java:690)javax.servlet.http.HttpServlet.service(HttpServlet.java:803)com.opensymphony.sitemesh.webapp.SiteMeshFilter.doFilter(SiteMeshFilter.java:58)com.opensymphony.sitemesh.compatability.OldDecorator2NewDecorator.render(OldDecorator2NewDecorator.java:46)com.opensymphony.sitemesh.webapp.decorator.BaseWebAppDecorator.render(BaseWebAppDecorator.java:34)com.opensymphony.sitemesh.webapp.SiteMeshFilter.doFilter(SiteMeshFilter.java:83)org.apache.struts2.dispatcher.ng.filter.StrutsPrepareFilter.doFilter(StrutsPrepareFilter.java:65)请高手指教,谢谢
解决方案
解决方案二:
struts-tags.ltd放在WEB-INF下了。在web.xml进行配置了吗。其他内容没有什么问题。
解决方案三:
这些都设置好了
解决方案四:
Warning:validationwasturnedonbutanorg.xml.sax.ErrorHandlerwasnotset,whichisprobablynotwhatisdesired.ParserwilluseadefaultErrorHandlertoprintthefirst10errors.PleasecallthesetErrorHandlermethodtofixthis.Error:URI="jndi:/localhost/JMMS/WEB-INF/struts-tags.tld",Line="2",:Documentrootelement"taglib",mustmatchDOCTYPEroot"null".Error:URI="jndi:/localhost/JMMS/WEB-INF/struts-tags.tld",Line="2",:Documentisinvalid:nogrammarfound.2011-1-267:50:31org.apache.catalina.core.ApplicationDispatcherinvoke严重:Servlet.service()forservletsitemesh-freemarkerthrewexceptionErrorparsingincludedtemplatetemplate/xhtml/controlheader.ftlEncountered"?"atline25,column23.Wasexpecting:<ID>...-Class:freemarker.core.IncludeFile:Include.javaMethod:acceptLine:148-freemarker/core/Include.java:148:-1atorg.apache.struts2.components.UIBean.end(UIBean.java:515)atorg.apache.struts2.views.jsp.ComponentTagSupport.doEndTag(ComponentTagSupport.java:42)atfreemarker.ext.jsp.TagTransformModel$TagWriter.endEvaluation(TagTransformModel.java:313)atfreemarker.ext.jsp.TagTransformModel$TagWriter.afterBody(TagTransformModel.java:289)atfreemarker.core.Environment.visit(Environment.java:235)atfreemarker.core.UnifiedCall.accept(UnifiedCall.java:116)atfreemarker.core.Environment.visit(Environment.java:196)atfreemarker.core.MixedContent.accept(MixedContent.java:92)atfreemarker.core.Environment.visit(Environment.java:196)atfreemarker.core.Environment.process(Environment.java:176)atfreemarker.template.Template.process(Template.java:232)atfreemarker.ext.servlet.FreemarkerServlet.process(FreemarkerServlet.java:427)atfreemarker.ext.servlet.FreemarkerServlet.doGet(FreemarkerServlet.java:366)atjavax.servlet.http.HttpServlet.service(HttpServlet.java:690)atjavax.servlet.http.HttpServlet.service(HttpServlet.java:803)atorg.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)atorg.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)atcom.opensymphony.sitemesh.webapp.SiteMeshFilter.doFilter(SiteMeshFilter.java:58)atorg.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)atorg.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)atorg.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:687)atorg.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:590)atorg.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:505)atcom.opensymphony.sitemesh.compatability.OldDecorator2NewDecorator.render(OldDecorator2NewDecorator.java:46)atcom.opensymphony.sitemesh.webapp.decorator.BaseWebAppDecorator.render(BaseWebAppDecorator.java:34)atcom.opensymphony.sitemesh.webapp.SiteMeshFilter.doFilter(SiteMeshFilter.java:83)atorg.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)atorg.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)atorg.apache.struts2.dispatcher.ng.filter.StrutsPrepareFilter.doFilter(StrutsPrepareFilter.java:65)atorg.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)atorg.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)atorg.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:228)atorg.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)atorg.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)atorg.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)atorg.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)atorg.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:216)atorg.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)atorg.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:634)atorg.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:445)
解决方案五:
<servlet><servlet-name>JspSupportServlet</servlet-name><servlet-class>org.apache.struts2.views.JspSupportServlet</servlet-class><load-on-startup>1</load-on-startup></servlet><jsp-config><taglib><taglib-uri>/struts-tags</taglib-uri><taglib-location>/WEB-INF/struts-tags.tld</taglib-location></taglib></jsp-config>
这些都配好了上面是错误信息