【发布时间】:2014-07-02 15:47:52
【问题描述】:
如果选项卡是从支持 bean 生成的,则不会触发 TabCloseEvent。 TabCloseEvent 与普通的 xhtml 选项卡一起工作正常。
这是我的代码
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.org/ui">
<h:head>
<title>Test Title</title>
</h:head>
<h:body>
<h:form id="form">
<p:growl id="growl" showDetail="true" />
<p:tabView id="tabview"
value="#{TestBean.tabList}"
var="tab"
widgetVar="tabviewV">
<p:ajax event="tabClose" listener="#{TestBean.onTabCloseAction}" update=":form:growl"/>
<p:tab id="tab" title="#{tab}" closable="true" >
<h:outputText value="#{tab}"/>
</p:tab>
</p:tabView>
</h:form>
</h:body>
</html>
托管 bean
@ManagedBean(name = "TestBean")
@ViewScoped
public class TestBean {
private List<String> tabList = new ArrayList<String>();
public TestBean() {
tabList.add("Test Tab 1");
tabList.add("Test Tab 2");
tabList.add("Test Tab 3");
tabList.add("Test Tab 4");
}
public void onTabCloseAction(TabCloseEvent event) {
System.out.println("Tab Closed Event : " + event.getTab().getTitle());
FacesMessage msg = new FacesMessage("Tab Closed", "Closed tab: " + event.getTab().getTitle());
FacesContext.getCurrentInstance().addMessage(null, msg);
}
public List<String> getTabList() {
return tabList;
}
public void setTabList(List<String> tabList) {
this.tabList = tabList;
}
}
我正在使用 Primefaces 5.0。我也尝试在 p:ajax 中使用 process="@this" 但结果相同。
【问题讨论】:
标签: jsf jsf-2 primefaces