gpt4 book ai didi

jsf - 带有动态标签数量的 PrimeFaces "tabChange"事件

转载 作者:行者123 更新时间:2023-12-04 17:24:21 25 4
gpt4 key购买 nike

我需要在 TabView 中获取当前事件选项卡的标题。 TabView 由动态数量的选项卡构成,监听器附加到“tabChanged”:

<p:tabView value="#{bean.list}" var="listItem">
<p:ajax event="tabChange" listener="#{listenerBean.onChange}" />
<p:tab title="#{listItem.stringProperty}">
</p:tab>
</p:tabView>

问题是 onChange(TabChangeEvent event) 接收到的 TabChangeEvent 对象总是包含第一个选项卡而不是事件选项卡。
public void onChange(TabChangeEvent event) {
event.getTab().getTitle(); //allways returns title of first tab
}

如果我明确定义每个选项卡,则此行为仅适用于 TabView 中的动态选项卡数量,TabChangeEvent 工作正常。

有什么建议么?谢谢。

我将 PrimeFaces 3.5 与 JSF2.1 和 Servlets 2.5 一起使用

最佳答案

以下最小示例通过打印选项卡的标题以在每次单击时激活,对我来说很有吸引力:

页面.xhtml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://xmlns.jcp.org/jsf/core"
xmlns:p="http://primefaces.org/ui"
xmlns:h="http://xmlns.jcp.org/jsf/html">
<f:view>
<h:head/>
<h:body>
<h:form>
<p:tabView value="#{bean.items}"
var="item">
<p:ajax event="tabChange"
listener="#{bean.printTitle}"
update="@form"/>
<p:tab title="#{item}">
</p:tab>
</p:tabView>
</h:form>
</h:body>
</f:view>
</html>

Bean.java
import javax.faces.view.ViewScoped;
import javax.inject.Named;
import java.io.Serializable;
import java.util.Arrays;
import java.util.List;

import org.primefaces.event.TabChangeEvent;

@Named
@ViewScoped
public class Bean implements Serializable {

private final List<String> items = Arrays.asList("Hello", "This", "Is", "TabView");

public List<String> getItems() {
return items;
}

public void printTitle(TabChangeEvent event) {
System.out.println("title = [" + event.getTab().getTitle() + "]");
}
}

关于jsf - 带有动态标签数量的 PrimeFaces "tabChange"事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28456182/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com