如何访问控制器外的url(或grails params)?

时间:2011-06-07 07:52:20

标签: grails

背景 我为应用程序创建了自己的TagLib。其中一个标记必须依赖于当前请求URL(在路径和url参数上)。 我有两个gsp文件 - 布局和常规页面。

问题: 我试图从标签处理程序获取当前请求URL:

request.requestURI

但不是我在浏览器中的内容

http://localhost:8888/gbv/999/index

出于某种原因,当从常规页面调用标记时,它将返回类似这样的内容:

/gbv/grails/index.dispatch

当从模板中调用标记时,它将返回此信息(这是正常的):

/gbv/999/index

问题: 如何做一个(或两个)

  1. 获取可从控制器访问的“params”的相同实例(无需修改控制器)
  2. 获取当前请求网址(与用户在浏览器中相同)

3 个答案:

答案 0 :(得分:4)

您应该只需引用标记类中的params即可获得对参数的引用。

如果要重新构造请求的完整路径(如浏览器中所示),可以使用request对象的方法执行此操作,该对象是HttpServletRequest的实例,例如

  • getContextPath()
  • getRequestURI()
  • getServerName()
  • getServerPort()

答案 1 :(得分:3)

使用以下

request.forwardURI

答案 2 :(得分:0)

使用${params.id}获取您正在查看的当前项目的ID

<小时/> 此外,
使用${controllerName}获取控制器名称 使用${actionName}获取操作名称