`

请问在FreeMarker中如何引用JSTL标签

阅读更多
   JSTL的<c:url="ddd"/>标签可以得到应用程序的部署目录,但是FreeMarker中如何知识应用程序的部署目录呢?在Google和Baidu以及各大论坛都狂搜索了一气,可以还是没有结果。
    http://smile6688.iteye.com/blog/49642 说明了FreeMarker引用Struts标签的方法,不知道FreeMarker能否引用JSTL的标签,如何引用呢?或者有没有什么办法可以在FreeMarker中使用类似于JSTL的<c:url="ddd"/>功能。
   非常感谢!
分享到:
评论
9 楼 totobacoo 2007-07-09  

Freemarker 本身是可以设置全局共享变量的。一旦设置了 SharedVariable,在当前 freemarkerManager 内是全局有效的。

你这个问题我是这样解决的,在容器 context 初始化的时候,读入域名的配置,设置到指定freemarker全局变量内。这样当前环境内,所有 ftl 都能够自由访问到。

 
public class SystemInitServlet extends HttpServlet {
  //....

  public void init() throws ServletException {
    // ...

    // 设置 Freemarker 共享变量
     Configuration config = FreemarkerManager.getInstance().getConfiguration(getServletContext());	    	
     config.setSharedVariable("webroot", Symbols.DOMAIN_NAME);
}


其中 Symbols.DOMAIN_NAME 是从配置文件中载入的“域名”常量


FTL 中的引用:
<link id="defaultCss" href="${webroot}/css/style.css" rel="stylesheet" type="text/css" />
8 楼 icefire 2007-05-30  
request.getSession().getServletContext().getRealPath("");
request.getContextPath();
这两个方法都不够用??
汗一个!
7 楼 vip01 2007-05-30  
汗我失败的例子又被拿出来示众
6 楼 stamen 2007-05-29  
  我已经解决了,谢谢大家。
解决办法是使用Spring为FreeMarker提供的宏:
1.通过exposeSpringMacroHelpers属性暴露Spring宏
<bean
		class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
	<property name="suffix" value=".ftl" />
	<property name="exposeRequestAttributes" value="true" />
	<property name="exposeSessionAttributes" value="true" />
	<property name="contentType" value="text/html; charset=utf-8"/>
	<property name="exposeSpringMacroHelpers" value="true"/><--注意这里
  </bean>


2.在模型文件中,通过<@spring.url 需要转换为URL/>,这相当于JSTL的<c:url value="ddd"/>
<#import "spring.ftl" as spring />  <---引入宏
  <html>
	<head>
		<title>
		  baobaotao
		</title>
	</head>
	<body>
		精华文章
		<table>
		    <#list topicList as topic>
				<tr>
					<td>
						${topic.topicId}
					</td>
					<td>					   
 <a href="[b]<@spring.url '/showTopic.html?topicId=${topic.topicId}'/>[/b]">${topic.title}</a>
					</td>
					<td>
					   ${topic.createDate?string("yyyy-MM-dd HH:mm:ss")}
					</td>
				</tr>
			</#list>
		 <table>
	</body>
</html>


 
5 楼 stamen 2007-05-29  
codeutil 写道

网上有引用jstl的例子:
http://www.blogjava.net/vip01/archive/2007/05/10/116431.html


这个我试了,不行吧。
4 楼 codeutil 2007-05-29  

网上有引用jstl的例子:
http://www.blogjava.net/vip01/archive/2007/05/10/116431.html

3 楼 ahuaxuan 2007-05-29  
没有必要为这个功能在模板导入标签
request.getSession().getServletContext().getRealPath("");
使用这个方法就能得到工程部署的决定路径,如果你是想得到contextpath,就用这个方法request.getContextPath()
2 楼 hajunma 2007-05-29  
    FreeMarker本来和JSTL就是两个东西,就象Struts和Tapestry一样,我建议你直接用JSTL,为什么要在FreeMarker中用JSTL呢?我怀疑这个比较难啊。
1 楼 quickselect 2007-05-29  
这个问题我也头疼啊,期望哪位用过的指点一下。或者说不能用??

相关推荐

    JSTL常用标签总结

    JSTL(JavaServer Pages Standard Tag Library)即JavaServer页面的标准标签库,它是一套用于JSP页面的自定义标签库,...JSTL标签库在JSP开发中非常实用,可以大大简化JSP页面的代码,提高开发效率和页面的可维护性。

    jstl标签的jar包

    JSTL(JavaServer Pages ...不过要注意,虽然JSTL能够简化JSP,但在现代Web开发框架如Spring MVC、Struts2等中,视图层通常使用更先进的模板技术,如Thymeleaf或FreeMarker,以提供更强的模板功能和更好的分离关注点。

    struts2、JSTL、Spring、JS、JSP标签大全

    除了标准的JSP标签外,还有自定义标签(如Struts2的标签)和JSTL标签。自定义标签可以封装复杂的业务逻辑,使得JSP页面更加清晰,遵循MVC原则,提高代码的可读性和可维护性。 以上知识点涵盖了Web开发的主要方面,...

    stand与jstl的jar包

    当服务器尝试加载并执行包含JSTL标签的JSP页面时,如果没有找到这些必要的jar包,就会抛出这个异常。解决方法就是添加`jstl-1.2.jar`和`standard-1.1.2.jar`到项目的类路径(classpath)中。 `jstl-1.2.jar`是JSTL...

    freemarker.jar下载

    在Freemarker中,数据模型是程序传递给模板的数据结构,通常由Java对象构成。模板中的变量引用这些数据,以生成最终的输出。例如,一个Web应用可能将请求参数、数据库查询结果或服务响应对象放入数据模型,然后通过...

    Freemarker 2.3.23 中文手册

    - **标签库**: 集成自定义标签库,例如Spring的Tiles和JSP的JSTL标签。 9. **与其他技术集成** - **Spring MVC**: Spring框架中广泛使用Freemarker作为视图解析器,配合`ModelAndView`或`Model`进行数据传递。 -...

    jstl需要导入的两个jar包

    在Java服务器端开发中,JSTL(JavaServer Pages Standard Tag Library)是一个强大的标签库,它提供了许多预定义的标签,使得开发者可以更方便地处理常见的JSP任务,如迭代、条件判断、XML处理等,从而减少Java脚本...

    FreeMarker教程

    - **概念**:FreeMarker还支持使用JSTL标签库,这些标签库提供了标准的JavaServer Pages标签库中的功能,包括条件语句、循环等。 ##### 4. 传值范围 - **概念**:FreeMarker支持在不同的作用域中传递数据,这有助...

    从jsp到freemarker2.3.23

    多重判断在Freemarker中通过`&lt;#switch&gt;`标签实现,语法简洁明了。 #### 自定义标签及其他特性 除了以上提到的内容外,Freemarker还支持许多其他特性,如自定义标签、指定默认值、存在性检查等。例如,指定默认值...

    java中web标签大全

    这里我们将深入探讨Struts1、Struts2、JSTL、Spring、JSF、Velocity和Freemarker这七大标签库,以及它们在实际应用中的作用。 首先,Struts1是Apache组织开发的一个基于MVC设计模式的Web应用程序框架。它的核心是...

    struts1.x整合freemarker

    - **Action类改造**: 将原本在JSP中使用的EL表达式和JSTL标签替换为Freemarker语法。 - **创建Freemarker模板**: 设计并创建与Action相对应的Freemarker模板文件(.ftl),放置在指定的模板目录下。 - **配置结果...

    freemarker总结

    上面的代码中的逻辑表达式用括号括起来主要是因为里面有&gt;符号,由于FreeMarker会将&gt;符号当成标签的结束字符,可能导致程序出错,为了避免这种情况,我们应该在凡是出现这些符号的地方都使用括号. Pythons are ...

    struts2+sqlserver2000+jstl+分页

    在分页场景下,JSTL的`fmt:formatNumber`标签可以用于格式化页码,`c:forEach`标签可以遍历并显示分页后的数据。同时,`c:url`和`c:param`标签则可以用来构造带有分页参数的URL,实现页面间的跳转。 分页是Web应用...

    java web 标签大全

    Struts Bean标签 Struts Html 标签 Struts Logic 标签 Struts Nested标签 Struts Tiles 标签 Struts2 标签 JSTL Core JSTL fmt JSTL functions Spring 标签 Spring 表单标签 Freemarker Velocity JSF Core JSF Form ...

    java web标签大全

    Java Web标签大全是一个涵盖广泛的资源,它集合了各种Web开发技术中的标签库,包括JSP、JSTL、Struts1、Struts2、JSF、FreeMarker、Spring和Velocity等。这些技术在构建动态、交互式的Web应用程序时起着至关重要的...

    数据库jar包文件,jstl,struts包

    在JSP页面上,利用JSTL标签处理数据展示和用户交互;同时,通过Struts框架来控制应用程序流程,处理HTTP请求,以及实现业务逻辑和数据访问层的解耦。 总的来说,这些jar包文件是Java Web开发中的基础工具,它们帮助...

Global site tag (gtag.js) - Google Analytics