gpt4 book ai didi

java - Liferay 7.3 如何获取portlet内的参数值并在view.jsp中访问

转载 作者:行者123 更新时间:2023-12-02 08:42:43 25 4
gpt4 key购买 nike

我正在尝试获取 Liferay 7.3 中 portlet 内的参数。如果我传递如下参数:

http://localhost:8080/web/guest?name=abhi

在包含我的 portlet 的网页中。所以我的问题是

Q1) 当用户重新加载上述页面时,我可以在 Portlet Controller (doView 方法)中获取此参数吗,方法如下:

import com.liferay.portal.kernel.util.ParamUtil;

public class MySamplePortlet extends MVCPortlet {

@Override
public void doView(RenderRequest renderRequest, RenderResponse renderResponse)
throws IOException, PortletException {

String name = ParamUtil.getString(renderRequest, "name");
System.out.println(name);

}
}

打印时,我的“名称”为空白。

Q2)如何在view.jsp View 文件中检查此参数的条件(如何获取 View 文件内的类变量值)?

<% if(name) %>
render form view
<% else %>
render messageBox view

......

我想根据参数值渲染不同的 View 。

最佳答案

Portlet 的参数通常是命名空间的 - 例如HTTP 参数 name任何 portlet 都可以是任何东西 - 并且一个页面可能有许多 portlet。大家可能都会想到name作为不同的东西:一座城市,一个用户,一个客户,当前使用的计算机,一只宠物......

因此,任何表单通常都会提交如下所示的值(在 jsp-lingo 中): <input name="<portlet:namespace/>name" ..../>而不是<input name="name" ..../>

如果您使用可识别 portlet 的标签,它们可能会自动进行装饰,例如<aui:input name="name" .../> .

在 portlet 世界中使用无向和无命名空间的参数可能会产生维护噩梦,特别是当您遇到第一个不明确的名称时。

但是,您可以停用每个 portlet 的命名空间。或者您可以手动访问底层的 HTTPServletRequest。两者都被强烈劝阻。如果你愿意的话,这就是搬起石头砸自己脚的方法:

  • 设置 portlet 的属性 com.liferay.portlet.requires-namespaced-parameters=false
  • 利用PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(renderRequest)) (这些函数的作用 - 以及为什么您需要它们 - 是 described, for example, here )

关于java - Liferay 7.3 如何获取portlet内的参数值并在view.jsp中访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61274118/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com