【问题标题】:Call PrimeFaces dialog from backing bean从支持 bean 调用 PrimeFaces 对话框
【发布时间】:2015-06-13 04:15:32
【问题描述】:

我希望当用户未登录时,单击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>

这是豆子:

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

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

但是Login.xhtml 没有打开。

【问题讨论】:

  • 您不应将&lt;f:ajax&gt;&lt;p:commandButton&gt; 混用。请改用&lt;p:ajax process="@form" update="@form"/&gt;。如果 orderBook() 被调用并且指定的条件被精确地满足,那么这应该可以工作,但是这应该使用 XHTML 以更直观的方式完成。
  • @Tiny orderBook() 现在被调用,我的问题只是在打开对话框。
  • @Tiny: &lt;p:commandButton&gt; 已经 ajaxified。根本不需要添加&lt;*:ajax&gt;
  • @Kukeltje :当需要使用processupdate 列出某些特定组件时,需要它(在这种情况下,process 默认为@formupdate默认为@none。因此,它需要明确,因为 OP 需要更新表单)。
  • @Kukeltje :是的,不需要。 &lt;p:commandButton&gt; 本身具有 processupdate 属性。抱歉,我忘了考虑它们。

标签: jsf jsf-2 primefaces dialog


【解决方案1】:


首先,您要做的是使用 PrimeFaces Dialog Framework(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");打开对话框

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

【讨论】:

  • PrimeFaces 文档中的全部内容
猜你喜欢
  • 2011-08-15
  • 2013-11-09
  • 1970-01-01
  • 1970-01-01
  • 2012-12-26
  • 1970-01-01
  • 2017-12-01
  • 2013-10-10
  • 2015-04-30
相关资源
最近更新 更多