Primefaces 3.3/3.4 tabview:tabChange上的ajax更新
使用以下代码,两个选项卡的内容将在tabChange事件中清除,而不是更新:Primefaces 3.3/3.4 tabview:tabChange上的ajax更新,ajax,jsf-2,primefaces,Ajax,Jsf 2,Primefaces,使用以下代码,两个选项卡的内容将在tabChange事件中清除,而不是更新: <h:form id="form"> <p:tabView id="tabview"> <p:ajax event="tabChange" listener="#{testBean.onChange}" update="@form"/> <p:tab title="Tab 1"> <h:outputTe
<h:form id="form">
<p:tabView id="tabview">
<p:ajax event="tabChange" listener="#{testBean.onChange}" update="@form"/>
<p:tab title="Tab 1">
<h:outputText value="Lorem ipsum dolor sit amet." id="ht1"/>
</p:tab>
<p:tab title="Tab 2">
<h:outputText value="Donec et mi et arcu commodo hendrerit." id="ht2"/>
</p:tab>
</p:tabView>
</h:form>
Facelet:
<?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:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.org/ui">
<h:head>
<title>Facelet Title</title>
</h:head>
<h:body>
<h:form id="form">
<p:tabView id="tabview" activeIndex="#{testBean.idx}">
<p:ajax event="tabChange" listener="#{testBean.onChange}" update="@form"/>
<p:tab title="Tab 1">
<h:outputText value="#{testBean.s1}" id="ht1"/>
</p:tab>
<p:tab title="Tab 2">
<h:outputText value="#{testBean.s2}" id="ht2"/>
</p:tab>
</p:tabView>
<h:messages/>
</h:form>
</h:body>
</html>
Facelet标题
更新
我将Primefaces jar从3.4改为3.2,神奇的是,这种行为不再发生了。然后我试着用3.3和轰,错误。我将在Primefaces论坛上询问这是否是一个已知的bug。您应该使用activeIndex
<p:tabView id="tabview" activeIndex="#{testBean.tabIndex}" >
在onchange方法中,验证后设置正确的tabindex。您应该使用activeIndex
<p:tabView id="tabview" activeIndex="#{testBean.tabIndex}" >
在onchange方法中,验证后设置正确的tabindex。仅绑定
activeIndex
属性是不够的。您还必须触发ajaxsubmit来更新服务器上的值。因此,它应该是:
<p:tabView activeIndex="#{bean.index}">
<p:ajax event="tabChange" />
</p:tabView>
仅绑定
activeIndex
属性是不够的。您还必须触发ajaxsubmit来更新服务器上的值。因此,它应该是:
<p:tabView activeIndex="#{bean.index}">
<p:ajax event="tabChange" />
</p:tabView>
你想做什么?你想实现什么?@roel在更改当前选项卡时,他想调用一些逻辑,很明显…?我以前在这种Primefaces对象上遇到过一些问题。你可以尝试在这里引用一个id
(不确定它是否解决了你的问题)。@roel正如阿奎洛所说,我的真实代码中有一些在onChange方法中调用的逻辑。阿奎罗:我试着引用一个id,但同样的问题发生了。谢谢,那么你能告诉我们你想做什么吗?也许有问题?你想做什么?你想实现什么?@roel在更改当前选项卡时,他想调用一些逻辑,很明显…?我以前在这种Primefaces对象上遇到过一些问题。你可以尝试在这里引用一个id
(不确定它是否解决了你的问题)。@roel正如阿奎洛所说,我的真实代码中有一些在onChange方法中调用的逻辑。阿奎罗:我试着引用一个id,但同样的问题发生了。谢谢,那么你能告诉我们你想做什么吗?也许有问题?这确实是以编程方式设置活动选项卡的正确方法,谢谢,经过测试和批准。不,这不是正确的方法,但它确实被复制到了整个互联网上。。。为什么要绑定activeIndex
,然后在选项卡change
侦听器中手动编辑其值?当你绑定它时,你已经告诉PrimeFaces读/写它了。发布另一个答案。这确实是以编程方式设置活动选项卡的正确方法,谢谢,经过测试和批准。不,这不是正确的方法,但它确实被复制到了整个互联网上。。。为什么要绑定activeIndex
,然后在选项卡change
侦听器中手动编辑其值?当你绑定它时,你已经告诉PrimeFaces读/写它了。发布另一个答案。当tabView不在表单中时,tabChange还需要启用partialSubmit。查看当tabView不在表单中时,tabChange还需要启用partialSubmit。看见