jsf - 在 primefaces 的新选项卡中打开菜单项页面

标签 jsf primefaces tabs menuitem

我有一个带有session scoped backing bean 的xhtml 页面。现在我必须在新标签页中打开此页面,右键单击在新标签页中打开链接。 当此页面打开时,必须清除辅助 bean 的模型类。 我使用了以下代码:

<p:menuitem value="Details" action="#{beanMB.clearDetailModel()}"/>

支持bean代码:

public void clearDetailModel()
    {
        memberModel=null;
        ......
        return "/pages/member/MemberDetails.xhtml?faces-redirect=true";
   }

上面的代码清除了 session 范围的模型,但它没有在新选项卡中打开页面。

是否有任何方法可以使用上述代码在新选项卡中打开页面,或者是否有其他方法可以解决上述问题?任何帮助将不胜感激。 谢谢。

最佳答案

你可以试试这个:

您需要将以下代码放在MemberDetails.xhtml 页面中。

<f:metadata>
<f:event type="preRenderView" listener="#{beanMB.clearDetailModel}"/>
</f:metadata>

并在 menuitem 中使用 url 打开您的页面。

<p:menuitem value="Details"  url="/pages/member/MemberDetails.xhtml" />

您需要修改您的支持 bean 代码如下:

public void clearDetailModel()
    {
        if (isNewRequest()){
        memberModel=null;
        ......
        }

   }

public boolean isNewRequest() {
        final FacesContext fc = FacesContext.getCurrentInstance();
        final boolean getMethod = ((HttpServletRequest) fc.getExternalContext().getRequest()).getMethod().equals("GET");
        final boolean ajaxRequest = fc.getPartialViewContext().isAjaxRequest();
        final boolean validationFailed = fc.isValidationFailed();
        return getMethod && !ajaxRequest && !validationFailed;
    }

这里的方法 isNewRequest() 检查请求是否是新的,如果没有检查,你的方法 clearDetailModel() 将在每次发出新请求时被调用。

关于jsf - 在 primefaces 的新选项卡中打开菜单项页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37237351/

相关文章:

javascript - 如何学习 primefaces javascript API?

java - 调用bean时Primefaces RemoteCommand时滞

html - 在选项卡中使用选项卡不起作用 - Material Design Lite

android - FragmentPagerAdapter 的麻烦和困境 : Constructor Undefined

javascript - JSF:选项的 SelectOneRadio 快捷方式

security - JSF 安全 : page redirect vs. 页面转发

java - Primefaces 日历 - 使用 EL 禁用特定日期

java - 用单引号替换方法时 Hibernate session.createQuery 错误

java - Eclipse 自定义 java 编译器

ruby - 有没有办法控制 Ruby 中的制表符大小?