我希望当用户未登录时,点击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
没有打开。
答案 0 :(得分:1)
首先,您要做的是使用PrimeFaces对话框架(DF)。
DF让你在对话框中打开XHTML视图
将此添加到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>
创建您的login.xhtml页面 任何XHTML页面。
将相应的结果添加到faces-config.xml。例如,
<navigation-case>
<from-outcome>Login</from-outcome>
<to-view-id>/pages/login.xhtml</to-view-id>
<redirect />
</navigation-case>
使用RequestContext.getCurrentInstance().openDialog("Login");
请注意,DF会在框架内打开新对话框。