Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Primefaces 3.3/3.4 tabview:tabChange上的ajax更新_Ajax_Jsf 2_Primefaces - Fatal编程技术网

Primefaces 3.3/3.4 tabview:tabChange上的ajax更新

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

使用以下代码,两个选项卡的内容将在tabChange事件中清除,而不是更新:

<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。看见