【问题标题】:Check current page url contents in liferay velocity template检查 liferay 速度模板中的当前页面 url 内容
【发布时间】:2015-04-22 17:33:03
【问题描述】:

我正在尝试查找 liferay Velocity(vm) 文件中的当前页面 url 内容和参数。 我可以通过这种方式获取当前页面的url。

我已经尝试解码 url

 http://localhost:8080/web/guest/sign-in?p_p_id=45&p_p_lifecycle=0&_58_redirect=‌​%2Fgroup%2Femployee%2FmainForm%3FempName%3DABC

使用以下方式

#set($absoluteUrl= $theme_display.getURLCurrent())
#set ($test=$httpUtil.decodeURL($absoluteUrl)) 

现在我得到的网址是

/web/guest/sign-in?p_p_id=58&p_p_lifecycle=0&_58_redirect=/group/employee/mainForm?empName=ABC

现在我正在尝试通过这种方式获取empName 的值。

#set($empName= $request.getParameter("empName"))

但仍然无法得到任何东西?我错过了什么?我现在如何获取这个参数的值?

【问题讨论】:

    标签: liferay-6 liferay-velocity liferay-theme


    【解决方案1】:

    您可以通过以下方式检查速度中的子字符串:

    #set ($url = $themeDisplay.getURLCurrent())
    
    #if($url.contains("&empName=ABC"))
    The url contains the string <b>&empName=ABC<b>
    #else
    The url does not contain the string <b>&empName=ABC</b>
    #end
    

    如果您想在检查其内容之前检查请求参数是否存在:

    #set($empName = $request.getParameter("empName"))
    
    #if (!$empName) 
    <h1>Parameter not found</h1>
    #else
    <h1>Parameter found: $empName</h1>
    #end`
    

    在 Liferay 6.1.1 ce ga2 中测试

    【讨论】:

    • 感谢您的快速回复。它有效,但我如何检查我的&amp;empName 值,因为它是动态的。意味着首先我们将检查 url 是否包含 &amp;empName 如果答案是肯定的,我们将需要 &amp;empName 的值,如何实现它?
    • 如果url包含像empName%3DABC这样的格式的参数,那我们如何获取empName的值呢?
    • 其实那不是常规的http请求格式。您可以将整个网址作为示例发布吗?
    • 我的 http url 是 http://localhost:8080/group/employee/mainForm?empName=ABC,当我将该 url 粘贴到浏览器中时,它会更改为 http://localhost:8080/web/guest/sign-in?p_p_id=45&amp;p_p_lifecycle=0&amp;_58_redirect=%2Fgroup%2Femployee%2FmainForm%3FempName%3DABC 那么如何检查 empName 的值?
    • url被服务器重写了,我看到的参数只有:p_p_id p_p_lifecycle _58_redirect
    【解决方案2】:

    如果url是这样的:

     http://localhost:8080/web/guest/sign-in?p_p_id=45&p_p_lifecycle=0&_58_redirect=‌​%2Fgroup%2Femployee%2FmainForm%3FempName%3DABC
    

    现在我们可以将此网址解码为:

    #set($url= $theme_display.getURLCurrent())
    #set ($decodedUrl=$httpUtil.decodeURL($url)) 
    

    所以我得到的网址是

    /web/guest/sign-in?p_p_id=58&p_p_lifecycle=0&_58_redirect=/group/employee/mainForm?empName=ABC
    

    现在我们可以通过这种方式获取 empName 的值:

    #set($empName=$decodedUrl.split("empName=").get(1)) 
    

    所以我们会得到 $empName=ABC 的值

    【讨论】:

      【解决方案3】:

      $themeDisplay.getScopeGroup().getPathFriendlyURL($themeDisplay.getLayout().isPrivateLayout(),$themeDisplay)+$layout.getGroup().friendlyURL

      这将检查页面是否为私有布局并显示 /[web|group]/[site-name]/

      【讨论】:

        【解决方案4】:

        比较当前网址:

        if($portal.getCurrentURL($request) == "/home")
        

        或

        if($portal.getCurrentURL($request).indexOf("/demo-demo")>=0)
        

        这会返回所有以'demo-demo'开头的URL;

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2019-10-31
          • 1970-01-01
          • 1970-01-01
          • 2011-02-14
          • 2010-10-23
          • 2012-11-12
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多