如何在Liferay中添加带有重定向到特殊jsp(编辑)的portlet
我在liferay中有一个portlet,它显示项目列表并允许添加/编辑(添加/保存/服务生成器完成的项目列表) 现在我需要单独的liferay页面,只添加新功能——这可以通过一个portlet完成,还是应该将其复制到单独的portlet中 我认为我需要的是:如何在Liferay中添加带有重定向到特殊jsp(编辑)的portlet,liferay,portlet,liferay-7,Liferay,Portlet,Liferay 7,我在liferay中有一个portlet,它显示项目列表并允许添加/编辑(添加/保存/服务生成器完成的项目列表) 现在我需要单独的liferay页面,只添加新功能——这可以通过一个portlet完成,还是应该将其复制到单独的portlet中 我认为我需要的是: 通过重定向到编辑表单(edit.jsp)打开portlet的方法 重定向到另一个带有param(itemId)的liferay页面的方法,该页面将在details.jsp而不是standard view.jsp上打开 ==== 编辑: 现
<liferay-portlet:renderURL varImpl="rowURL">
<portlet:param name="backURL" value="<%= portletURLString %>" />
<portlet:param name="mvcPath" value="/html/details.jsp" />
<portlet:param name="itemId" value="<%= String.valueOf(item.getId()) %>" />
</liferay-portlet:renderURL>
加:
但是它们只在同一个portlet/页面中工作
在liferay中,我有两个公共页面:“搜索/详细信息”和“添加”
在“添加”页面上,这个portlet应该呈现edit.jsp(第二个url)。
然后,在一个操作之后,我应该将授权用户重定向到“搜索/详细信息”页面,该页面带有新创建项目的id,并显示其详细信息
我可以创建两个portlet,但我确信有更好、更符合生活的解决方案来解决这个问题 您的问题有点高,但解决方案是以下技术:
如果您能提供一些示例代码,我们可以更详细地介绍。您的问题有点高,但解决方案是以下技术:
您可以在多个页面上使用单个(相同)portlet来实现这一点,默认为列表视图。只需在列表视图的锚上为
rowURL
和addURL
操作设置target=“\u blank”
,即可在新选项卡上打开该链接。其余部分将由portlet生命周期处理,以基于为URL设置的portlet:param
呈现特定视图
另一种方法是将itemId=abc
和action=add/update
作为queryString直接重定向到页面。在portlet的doView
中,从request
获取该参数,并基于这些参数,过滤jsp的包含
没有为查看/添加创建单独portlet的硬性n-fast规则/
更新操作。那完全取决于你
您可以在多个页面上使用单个(相同)portlet来实现这一点,默认为列表视图。只需在列表视图的锚上为
rowURL
和addURL
操作设置target=“\u blank”
,即可在新选项卡上打开该链接。其余部分将由portlet生命周期处理,以基于为URL设置的portlet:param
呈现特定视图
另一种方法是将
itemId=abc
和action=add/update
作为queryString直接重定向到页面。在portlet的doView
中,从request
中获取该参数,并基于这些参数,过滤jsp的包含。如果您有站点的静态布局,并且您知道将放置哪个portlet,您可以使用liferay renderurl标记的plid(页面布局ID)参数。这不仅允许您处理portlet,还允许您处理页面。plid通常从某些配置加载
如何重用现有代码的另一个技巧是重用实际的表单和动作类,并且只创建新的portlet定义。这要求您使用Liferay MVC+操作命令模式。如果您有站点的静态布局,并且您知道将放置哪个portlet,您可以使用Liferay renderurl标记的plid(页面布局ID)参数。这不仅允许您处理portlet,还允许您处理页面。plid通常从某些配置加载
如何重用现有代码的另一个技巧是重用实际的表单和动作类,并且只创建新的portlet定义。这要求您使用Liferay MVC+操作命令模式。您可以使用portlet首选项/自定义配置设置默认视图。您的portlet P可以有一个配置参数,用于portlet a的“类型”应该是(在您的示例中,您有两种类型,“视图”和“细节”)。基于此参数,可以相应地处理渲染/动作逻辑 这样,对于L1和L2两种布局,您可以在L1上放置一个p实例,并将其类型设置为“视图”。然后可以在L2上放置另一个P实例 在p的组件(例如render命令)中,您可以检查类型(视图或细节),并且您可以根据您的用例(您想要使用的jsp等)在这里控制呈现/操作逻辑 有关liferay 7中配置的更多信息,请参阅:
<liferay-portlet:renderURL varImpl="addURL">
<portlet:param name="mvcPath" value="/html/edit.jsp" />
</liferay-portlet:renderURL>