【问题标题】:target="_blank" in p:menuitem doesn't open new tabp:menuitem 中的 target="_blank" 没有打开新标签
【发布时间】:2016-02-12 20:53:00
【问题描述】:

我正在使用 primefaces 5.1、liferay 6.2.0-ga2 和 JSF2。我有一个带按钮的页面。当我按右键单击带有一个菜单项的上下文菜单时,会显示。该菜单项必须打开一个新选项卡,但它没有。

<p:commandButton id="viewUnassignedCase"
    action="application-container" styleClass="icon fa fa-eye">
    <f:setPropertyActionListener
        target="#{applicationManagementBean.application}"
        value="#{unassignedCase}" />

    <f:setPropertyActionListener
        target="#{applicationManagementBean.activeIndexTab}" value="0" />
</p:commandButton>

<p:contextMenu for="viewUnassignedCase" id="tableMenu" 
    widgetVar="tableMenu">
    <p:menuitem value="#{caseList['caseManagement.case.newtab']}" 
        target="_blank"
        action="#{applicationManagementBean.openNewTabDetail(unassignedCase)}">
    </p:menuitem>
</p:contextMenu>

还有豆子

public String openNewTabDetail(final FlexibleDomain application)
{
setApplication(application);
return "application-container";
}

我该如何解决?

【问题讨论】:

  • 3 个想法:尝试使用 ajax="false"。尝试返回“/application-container.xhtml?faces-redirect=true”。并尝试给它一个硬编码的网址而不是动作,如果这有效,目标和动作显然不能一起工作

标签: jsf jsf-2 primefaces menuitem new-window


【解决方案1】:

Primefaces's GoogleCode 上有一个标记为“Won'tFix”的问题,用于此行为(p:menuItem 未使用操作打开新窗口)。

在您的情况下,您需要将基于操作的导航调整为基于 url 的导航。

我真的不知道如何让它在你的项目中工作,但我最好的办法是尝试这样的事情:

<p:contextMenu for="viewUnassignedCase" id="tableMenu" 
                            widgetVar="tableMenu">
                            <p:menuitem value="#{caseList['caseManagement.case.newtab']}" 
                                target="_blank"
                                url="www.yoururl.com/yourdesiredpath">
                            </p:menuitem>
                        </p:contextMenu>

在最坏的情况下,您应该尝试覆盖 Primefaces 的 p:menuitem 默认行为,或者尝试使用其他支持这种实现的组件。

祝你好运!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多