`

freemarker在grails中的隐藏变量

 
阅读更多

1.假设你用以下地址访问系统:

http://www.abc.com/html/aboutLaw?name=cat&age=20

 

很明显是渲染了aboutLaw.ftl这个页面。如果要在aboutLaw.ftl中直接使用传来的参数name和age,要怎么用呢?

很简单,用以下变量:

 

 

<#list RequestParameters?keys as x>                    	
                        ${x}<br/>
                    	${RequestParameters[x]}<br/>
                    	---------------------<br/>
  </#list>

 

其实就是用到了RequestParameters。在上例中,可以用${RequestParameters['name']}直接得到传过来的参数值。

 

 

2.还有一个变量:Request

 

<#list Request?keys as x>
                    	key:${x}<br/>
                    	value:${Request[x]}<br/>
                    	--------------------- <br/>
    </#list>

 

我的controller如下:

 

package controller
import java.util.HashSet;
import net.sf.json.JSONArray
import javax.servlet.RequestDispatcher
import java.lang.Thread
import model.*
import javax.servlet.ServletResponse
import org.springframework.web.servlet.ModelAndView
class HtmlController  extends BaseController {
	def gotoHtml={
		render(view:"${params.page}")
	}
	def aboutLaw={
			
	}
	def aboutYuanli={
			
	}
	def aboutFee={
			
	}
	def aboutUs={
			
	}
	def help={
			
	}
	
}

 访问地址为:

 

http://www.abc.com/html/aboutLaw

 

 

打印出的信息如下:

 

key:javax.servlet.forward.request_uri
value:/html/aboutLaw
--------------------- 
key:javax.servlet.forward.context_path
value:
--------------------- 
key:javax.servlet.forward.servlet_path
value:/html/aboutLaw
--------------------- 
key:aboutFee
value:controller.HtmlController$_closure4@3b889b
--------------------- 
key:manager
value:manager.Manager@793ec9
--------------------- 
key:org.springframework.web.servlet.DispatcherServlet.THEME_SOURCE
value:org.codehaus.groovy.grails.commons.spring.GrailsWebApplicationContext@1f39cb2: startup date [Tue Nov 08 09:21:17 CST 2011]; parent: Root WebApplicationContext
--------------------- 
key:org.springframework.web.servlet.DispatcherServlet.THEME_RESOLVER
value:org.springframework.web.servlet.theme.FixedThemeResolver@5e67f1
--------------------- 
key:springMacroRequestContext
value:org.springframework.web.servlet.support.RequestContext@857f69
--------------------- 
key:metaClass
value:groovy.lang.ExpandoMetaClass@359912[class controller.HtmlController]
--------------------- 
key:aboutUs
value:controller.HtmlController$_closure5@6ffb14
--------------------- 
key:help
value:controller.HtmlController$_closure6@1cd022c
--------------------- 
key:org.codehaus.groovy.grails.GRAILS_APPLICATION_ATTRIBUTES
value:org.codehaus.groovy.grails.web.servlet.DefaultGrailsApplicationAttributes@49c8dd
--------------------- 
key:urlMapping.FILTERED
value:
--------------------- 
key:charEncodingFilter.FILTERED
value:
--------------------- 
key:ctx
value:org.codehaus.groovy.grails.commons.spring.GrailsWebApplicationContext@1f39cb2: startup date [Tue Nov 08 09:21:17 CST 2011]; parent: Root WebApplicationContext
--------------------- 
key:org.codehaus.groovy.grails.CONTROLLER_NAME_ATTRIBUTE
value:html
--------------------- 
key:grailsApp
value:org.codehaus.groovy.grails.commons.DefaultGrailsApplication@11aed03
--------------------- 
key:org.codehaus.groovy.grails.CONTROLLER
value:controller.HtmlController@22537a
--------------------- 
key:hiddenHttpMethod.FILTERED
value:
--------------------- 
key:grailsWebRequest.FILTERED
value:
--------------------- 
key:org.springframework.web.servlet.DispatcherServlet.CONTEXT
value:org.codehaus.groovy.grails.commons.spring.GrailsWebApplicationContext@1f39cb2: startup date [Tue Nov 08 09:21:17 CST 2011]; parent: Root WebApplicationContext
--------------------- 
key:aboutLaw
value:controller.HtmlController$_closure2@1968017
--------------------- 
key:aboutYuanli
value:controller.HtmlController$_closure3@1b3a564
--------------------- 
key:class
value:class controller.HtmlController
--------------------- 
key:org.codehaus.grails.INCLUDED_JS_LIBRARIES
value:
--------------------- 
key:gotoHtml
value:controller.HtmlController$_closure1@12f7431
--------------------- 
key:getPage
value:controller.BaseController$_closure1@753f9f
--------------------- 
key:org.codehaus.groovy.grails.ACTION_NAME_ATTRIBUTE
value:aboutLaw
--------------------- 
key:org.codehaus.groovy.grails.web.sitemesh.GrailsPageFilter.GSP_SITEMESH_PAGE
value:org.codehaus.groovy.grails.web.sitemesh.GSPSitemeshPage@1a41860
--------------------- 
key:reloadFilter.FILTERED
value:
--------------------- 
key:com.opensymphony.sitemesh.APPLIED_ONCE
value:
--------------------- 
key:sysParaService
value:service.SysParaService@6231ed
--------------------- 
key:day
value:86400
--------------------- 
key:org.codehaus.groovy.grails.WEB_REQUEST
value:ServletWebRequest: uri=/grails/html/aboutLaw.dispatch;client=127.0.0.1;session=D0849CBBEA6B59B4B7A0653BBF363064
--------------------- 
key:org.springframework.web.servlet.DispatcherServlet.LOCALE_RESOLVER
value:org.springframework.web.servlet.i18n.SessionLocaleResolver@44899b


 其中的javax.servlet.forward.request_uri很有用。

在freemarker中取得当前url ,就可以用以下语句

${Request['javax.servlet.forward.request_uri']}

分享到:
评论

相关推荐

    grails使用freemarker.rar

    这就是FreeMarker在Grails中的基本应用,它允许开发者以声明式的方式处理数据,减少了模板代码中的业务逻辑。 总结来说,这个压缩包内容可能包括如何在Grails项目中配置和使用FreeMarker,以及如何处理领域类之间的...

    freemarker替换变量实例

    freemarker替换变量实例

    FreeMarker2.3.23官方中文文档

    1. **变量和表达式**:在FreeMarker模板中,`${}`内的内容是表达式,用于获取Java对象的属性或执行简单的运算。例如`${user.name}`将输出用户对象的name属性。 2. **指令**:FreeMarker提供了一系列的内置指令,如`...

    freemarker 中文乱码解决

    在处理Freemarker模板引擎时,中文乱码问题是一个常见的挑战,尤其是在国际化应用中。Freemarker是一款功能强大的模板引擎,被广泛应用于Web开发中,用于动态生成HTML、XML等文本格式的页面。然而,当涉及到非英文...

    FreeMarker+中文手册

    这些指令和变量在运行时会被替换为实际的数据。 2. **数据模型(Data Model)**:数据模型是应用程序提供给FreeMarker的数据源,它包含了要在模板中展示的变量和对象。这些数据可以是Java对象、集合、Map等。 3. *...

    FreeMarker中文文档.pdf下载

    根据提供的文件信息,我们可以深入探讨FreeMarker的相关知识点及其在网页模板设计中的应用。FreeMarker是一种用Java编写的模板引擎,其主要用途在于帮助开发者高效地生成动态内容,尤其是在Web开发领域有着广泛的...

    FreeMarker_2.3.23 中文

    FreeMarker 是一个强大的模板引擎,常用于Web应用开发中的视图层,特别是在Java平台上。它与JSP、Servlet等技术配合使用,可以实现MVC(Model-View-Controller)架构中的视图部分,帮助开发者将业务逻辑与表现层分离...

    freemarker中文文档与包

    2. **数据模型与变量**: 在Freemarker中,数据模型是由Java对象组成的,这些对象可以通过模板语言访问。模板中的变量通常引用这些数据模型中的属性,例如`${user.name}`将输出用户对象的name属性值。 3. **模板设计...

    freemarker中文API手册

    3. 通用数据模型:FreeMarker不直接反射到Java对象,而是通过插件式对象封装,以变量方式在模板中显示。 4. 为Web准备:内建处理典型Web相关任务,能够集成到Model2 Web应用框架中作为JSP的替代,支持JSP标记库。 5....

    freemarker的shiro标签

    1. **Shiro标签库**:Shiro提供了与FreeMarker集成的标签库,使得在FreeMarker模板中可以直接使用Shiro的权限控制功能。例如,`&lt;@shiro.hasPermission&gt;`标签可以用来判断当前用户是否有某个操作的权限,如果用户有...

    freemarker 源码、中文API、 freemarker Myeclipse 编辑器

    Freemarker是一个强大的模板引擎,常用于Web应用中的视图层渲染,比如Java Web开发。它的核心设计理念是将数据模型与展示逻辑分离,使得开发者可以专注于业务数据的处理,而视图的呈现则由模板来完成。这个压缩包...

    Freemarker中遍历list集合实例

    在这个例子中,`users`是Java端传递到Freemarker模板的一个list,`user`是循环中的变量,每次迭代时代表`users`列表中的一个元素。`as`关键字用于定义迭代变量。在循环体内,我们可以通过`user`访问当前元素的属性,...

    Freemarker简介及标签详解大全

    5. 通用数据模型:FreeMarker 不是直接反射到 Java 对象,Java 对象通过插件式对象封装,以变量方式在模板中显示。 6. 为 Web 准备:在模板语言中内建处理典型 Web 相关任务(如 HTML 转义)的结构。 7. 智能的国际...

    freemarkerdemo 生成word 插入图片

    在Freemarker模板中,可以定义一个变量来存储这个编码,然后在Word模板中使用这个变量插入图片。 4. **Java Web项目集成**:在Java Web项目中,Freemarker通常与Servlet容器(如Tomcat)一起工作。服务器端的Java...

    Freemarker 实例,Freemarker 实例

    在Java项目中,通常通过`freemarkerConfigurer`配置Freemarker,设置模板路径、缓存策略等。例如: ```java FreeMarkerConfigurer configurer = new FreeMarkerConfigurer(); configurer.setTemplateLoaderPath(...

    freemarker 自定义freeMarker标签

    FreeMarker使用${...}表达式来插入变量,#{...}用于输出注释,以及、等控制结构进行条件判断和循环。然而,这些默认标签可能无法满足所有复杂的场景,因此自定义标签就显得尤为必要。 自定义FreeMarker标签通常涉及...

    Freemarker API 中英文合集 chm格式

    - **变量表达式**: `${variable}`,用于输出数据模型中的值。 - **三元运算符**: `${condition ? valueIfTrue : valueIfFalse}`,根据条件输出不同值。 - **方法调用**: `${object.method()}`,可以在模板中...

    freemarker入门文档及例子

    2. 数据模型:这是Java对象集合,由应用程序提供给Freemarker,模板中的变量引用这些对象来生成输出。 3. 处理过程:Freemarker引擎将数据模型和模板结合,根据模板中的指令和数据生成最终的输出。 二、Freemarker...

Global site tag (gtag.js) - Google Analytics