如何在Liferay中添加带有重定向到特殊jsp(编辑)的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,它显示项目列表并允许添加/编辑(添加/保存/服务生成器完成的项目列表)

现在我需要单独的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定义一个将直接在portlet中传输参数的
  • 在您的portlet中,您可以对参数做出反应,显示您想要的任何jsp

  • 如果您从2定义了友好url。您可以在链接中轻松使用它:


  • 如果您能提供一些示例代码,我们可以更详细地介绍。

    您的问题有点高,但解决方案是以下技术:

  • 您可以为您的portlet定义一个将直接在portlet中传输参数的
  • 在您的portlet中,您可以对参数做出反应,显示您想要的任何jsp

  • 如果您从2定义了友好url。您可以在链接中轻松使用它:

  • 如果您能提供一些示例代码,我们可以更详细地介绍

    没有为查看/添加创建单独portlet的硬性n-fast规则/ 更新操作。那完全取决于你


    您可以在多个页面上使用单个(相同)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中配置的更多信息,请参阅:


    您可以使用portlet首选项/自定义配置设置默认视图。您的portlet P可以有一个配置参数,用于portlet a的“类型”应该是(在您的示例中,您有两种类型,“视图”和“细节”)。基于此参数,可以相应地处理渲染/动作逻辑

    这样,对于L1和L2两种布局,您可以在L1上放置一个p实例,并将其类型设置为“视图”。然后可以在L2上放置另一个P实例

    在p的组件(例如render命令)中,您可以检查类型(视图或详图),并且您可以在这里控制
    <liferay-portlet:renderURL varImpl="addURL">
        <portlet:param name="mvcPath" value="/html/edit.jsp" />
    </liferay-portlet:renderURL>