`

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']}

分享到:
评论

相关推荐

    Groovy and Grails Recipes.pdf

    Groovy和Grails在企业级项目中的应用** - **集成测试**:利用Groovy的单元测试框架进行自动化测试,确保代码质量。 - **部署策略**:Grails支持多种部署方式,包括传统的WAR包部署和独立的Jetty或Tomcat服务器。 ...

    Beginning Groovy and Grails, From Novice to Professional

    - **视图(Views)**:Grails支持多种视图技术,包括FreeMarker模板引擎,这使得开发者可以根据需求选择最适合的视图技术。 - **服务层(Services)**:服务层主要用于处理复杂的业务逻辑,它们通常不直接与用户交互...

    [Groovy入门]第十讲.使用模板引擎开发界面

    在Groovy中,你可以通过Freemarker API创建模板并填充数据。Freemarker模板由控制结构(如`#if`, `#foreach`)和变量引用组成,这些结构会根据提供的数据模型动态生成输出。 3. **模板引擎的优势** - **代码分离**...

    [Groovy入门]第六讲.脚本重构为类,重构为MVC模式

    在Groovy中,视图可以是模板引擎如FreeMarker或Thymeleaf生成的HTML页面。 - **Controller(控制器)**:作为模型和视图之间的桥梁,处理用户的输入,调用模型进行业务处理,并更新视图。在Groovy中,控制器通常是一...

    GMines:MSN Games的《扫雷旗》在线版本

    1. **领域模型**:在Grails中,领域模型是业务逻辑的核心,它代表了应用中的实体和它们之间的关系。在GMines中,可能会有`MineField`、`Cell`和`Flag`等类,分别表示雷区、单元格和标记。这些类包含了游戏规则和状态...

    Groovy in Action源代码

    6. **Grails框架**:如果源代码中涉及到Grails,那么你将有机会了解这个基于Groovy的全栈Web开发框架,包括Controller、Service、Domain Class、GSP视图等组件的使用。 7. **AST转换**:Groovy编译器支持用户自定义...

    sourcecode

    在软件开发中,源代码是程序员用高级编程语言编写的程序文本,它描述了计算机执行的逻辑和操作。描述“仕様書より、ソースコードを生成する”表明我们要关注的是从规格说明书(仕様書)自动生成源代码的过程。 在...

    templates

    1. **Groovy Server Pages (GSP)**:这是Grails框架的一部分,允许开发者在Web应用中创建动态页面。GSP将HTML和Groovy代码结合起来,使得视图层的开发更加灵活。GSP模板包含HTML标签以及嵌入的Groovy表达式,用于...

Global site tag (gtag.js) - Google Analytics