freemarker中使用struts-tags的问题

问题描述

大家好我在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>

这些都配好了上面是错误信息

时间: 2024-07-31 03:34:14

freemarker中使用struts-tags的问题的相关文章

Struts 2杂谈(2):如何向标签文件中的Struts 2标签传递参数值

标签文件是JSP自定义标签中的一种,实现的方法在WEB-INF\tags目录或子目录中建立一个.tag文件,如table.tag,并通过taglib指令来引用.tag文件所在的目录,代码如下: <%@ taglib prefix="t" tagdir="/WEB-INF/tags"%> 如果在标签文件中使用Struts 2标签,就会带来一个问题.下面先看一个例子. 在WEB-INF\tags目录中建立一个table.tag文件,代码如下: <%@

15.2. Struts Tags

使用Struts Tags 需要在jsp页面中加入下面一行. <%@ taglib prefix="s" uri="/struts-tags" %> 15.2.1. property <%@ taglib prefix="s" uri="/struts-tags" %> <html> <head> <title>Hello</title> </hea

如何在Web工程项目中使用Struts

web|项目 起初的工程(未引入Struts)目录结构如下: 修改你的web.xml配置 如下: 修改之前是: <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_

如何在项目实践中扩展Struts

项目 我看到很多项目中,开发者实现了自己的MVC框架,并不是因为他们想做同Struts根本不同的东西,而是因为他们并没有意识到如何扩展Struts.开发自己的MVC框架可以获得全部的控制权,但是这也意味着需要很多资源来实现它(人力物力),在紧张的日程安排下,有时候这是不可能的. Struts不仅仅是一个强大的框架,同时它也是可扩展的.你可以以三种方式来扩展Struts. 1.PlugIn:如果你想在application startup或shutdown的时候做一些业务逻辑的话,那就创建你自己的

Struts 2中的struts.properties配置文件

提供框架的很多属性,可以根据需要改变一些默认属性.默认属性文件default.properties,这个文件被存在struts2-core-x.jar的jar包中.例如请求一个action的默认后缀是.action所以请求地址是http://localhost:8080/Chapter01-FirstStruts2/Hello.action,我们可以改变这个后缀它的属性是struts.action.extension=action,为了改变这个属性我们可以在src源文件夹下面创建一个struts

Freemarker中Configuration的setClassForTemplateLoading方法参数问题

今天使用freemarker中Configuration的setClassForTemplateLoading方法遇到了加载模板目录的一个小问题. 由于网上的其他论坛,博客写的有点乱,故记录一下. Freemarker是一个模板框架,主要是为了加快染速度而产生的.它与web容器无关,只要是关于模板生成一些代码的都可以使用它完成. 比如xml,Java代码的生成等. 其他类似的模板框架还有velocity. 本文主要讲的是Freemarker的加载模板目录问题,它的语法就不描述了.具体的语法可在官

freemarker中比较一个list中的两个对象的属性是否相等

问题描述 freemarker中比较一个list中的两个对象的属性是否相等 freemarker我从后台map里放了个list,然后想遍历list的时候对list中两个索引中对象的值做比较怎么弄,代码如下我想比较索引两个下标中对象的carbrandname是否相等,根据结果动态生成页面 <#list carList as obj> ${obj_index}.${obj.carbrandname == obj.carbrandname} <#if (${obj_index.obj.carb

Freemarker中遍历List以及内置函数使用

=  在Freemarker应用中经常会遍历List获取需要的数据,并对需要的数据进行排序加工后呈现给用户.   那么在Freemarker中如何遍历List,并对List中数据进行适当的排序呢?一. Freemarker中list指令简单介绍 要想在Freemarker中遍历list,必须通过使用list指令,即<#list sequence as item>-</#list> sequence是集合(collection)的表达式,item是循环变量的名字,不能是表达式. 当在

freeMarker中list嵌套的问题

问题描述 freeMarker中list嵌套的问题 <#list table as plan1>${plan1.num} <#assign aa =plan1.dkxx /> <#list aa as plan2> ${plan2.dkbm} </#list> </#list>

freemarker中的list遍历 ,我想实现每行只显示三个数据

问题描述 freemarker中的list遍历 ,我想实现每行只显示三个数据