jsf - primefaces Tabclose 事件在侦听器中接收空选项卡
问题描述
我通过单击新建选项卡按钮生成动态选项卡。这是一个奇怪的问题。当我关闭第一个选项卡时,我生成了 3 个选项卡,但当我关闭第二个选项卡时,我们收到了空选项卡。
这是示例代码
Xhtml页面:
<h:form>
<p:commandButton id="cmdbutton" value="NewTab"
actionListener="#{bean.buttonListener}" update=":tabView"></p:commandButton>
</h:form>
<p:tabView id="tabView" dynamic="true" cache="false"
widgetVar="tabViewVar">
<p:ajax event="tabClose" listener="#{bean.onTabClose}"
partialSubmit="true" />
<p:tab title="Godfather Part I">
<h:form>
<p:commandButton id="cmdbutton12" value="button" update=":tabView"></p:commandButton>
<h:panelGrid columns="2" cellpadding="10">
<h:outputText value="The story begins as Don Vito Corleone..." />
</h:panelGrid>
</h:form>
</p:tab>
<c:forEach items="#{bean.dynamicTab}" var="tab">
<p:tab id="#{tab.id}" binding="#{tab}"></p:tab>
</c:forEach>
</p:tabView>
豆:
public class Bean implements Serializable{
private static final long serialVersionUID = 1L;
private List<Tab> dynamicTab = new ArrayList<Tab>();
public List<Tab> getDynamicTab() {
return dynamicTab;
}
public void setDynamicTab(List<Tab> dynamicTab) {
this.dynamicTab = dynamicTab;
}
public Bean() {
super();
}
public void buttonListener(ActionEvent a){
HtmlForm f=new HtmlForm();
Tab tempTab = new Tab();
String id="abc"+UUID.randomUUID().toString();
tempTab.setId(id);
tempTab.setTitle(id);
tempTab.setClosable(true);
tempTab.getChildren().add(f);
dynamicTab.add(tempTab);
}
public void onTabClose(TabCloseEvent event) {
Tab tab = event.getTab();
dynamicTab.remove(tab);
}
}
解决方案
推荐阅读
- python - 如何在 django 的 admin.py 文件中注册继承的子类?
- php - Update database when I submit button HTML / PHP
- php - 在php中无法访问关联数组
- java - 单击日历时如何在调度程序视图中获取资源
- swift - 如何在一系列问题的标签中显示下一个问题
- azure-devops - 一次所有构建和发布定义导出?
- mongodb - MongoDB 显示打开的连接过多
- kubernetes - IllegalStateException:找不到连接 1001 Kafka Kubernetes 的条目
- reactjs - 如何在另一个 redux 操作中检索有效负载
- sql - 学说查询 orderBy 查询中的用户总数