从支持bean调用PrimeFaces对话框

时间:2015-04-08 09:21:09

标签: jsf jsf-2 primefaces dialog

我希望当用户未登录时,点击Add To Card按钮后,会出现Login对话框。

以下是Book.xhtml

<h:form>
    <p:commandButton value="Add To Card"
                     actionListener="#{booksBean.orderBook()}" 
                     class="QtyBtn">
        <f:ajax execute="@form" rendered="@form"/>
    </p:commandButton>
</h:form>

这是bean:

@Component
@Scope("session")
public class BooksBean implements Serializable {
...
public void orderBook() {
...

    if (currentUser == null) {  // show the login dialog
        RequestContext.getCurrentInstance().openDialog("Login");
    }

但是Login.xhtml没有打开。

1 个答案:

答案 0 :(得分:1)


首先,您要做的是使用PrimeFaces对话框架(DF)。 DF让你在对话框中打开XHTML视图

  1. 将此添加到faces-config.xml

    <application>
      <action-listener>
        org.primefaces.application.DialogActionListener
      </action-listener>
      <navigation-handler>
        org.primefaces.application.DialogNavigationHandler
      </navigation-handler>
      <view-handler>
        org.primefaces.application.DialogViewHandler
      </view-handler>
    </application>
    
    1. 创建您的login.xhtml页面 任何XHTML页面。

    2. 将相应的结果添加到faces-config.xml。例如,

      <navigation-case>
        <from-outcome>Login</from-outcome>
        <to-view-id>/pages/login.xhtml</to-view-id>
        <redirect />
      </navigation-case>
      
    3. 使用RequestContext.getCurrentInstance().openDialog("Login");

    4. 打开对话框

      请注意,DF会在框架内打开新对话框。