Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.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
Java 订单列表中的Primefaces面板_Java_Jsf_Primefaces_Panel - Fatal编程技术网

Java 订单列表中的Primefaces面板

Java 订单列表中的Primefaces面板,java,jsf,primefaces,panel,Java,Jsf,Primefaces,Panel,我想使用p:orderList和p:panel组件实现列表元素的重新排序。最初列表中有一个POJO,但即使是字符串列表也会出现问题 这是我的豆子: public class BackingBean { private List<String> list; public void addDate() { list.add(new Date().toString()); } // Getters and setters...

我想使用p:orderList和p:panel组件实现列表元素的重新排序。最初列表中有一个POJO,但即使是字符串列表也会出现问题

这是我的豆子:

public class BackingBean {

    private List<String> list;

    public void addDate() {
        list.add(new Date().toString());
    }    

    // Getters and setters...
}
公共类BackingBean{
私人名单;
公共无效添加日期(){
添加(新日期().toString());
}    
//接球手和接球手。。。
}
我的页面来源:

<p:orderList id="videos" value="#{bean.list}" var="date" itemValue="#{date}"
    controlsLocation="none">
    <p:column >
        <p:panel header="#{date}" toggleable="true" toggleSpeed="500">
            FC Barcelona is one of only three clubs...
        </p:panel>
    </p:column>
</p:orderList>

巴塞罗那是仅有的三家俱乐部之一。。。

问题是,每次我切换其中一个面板时,所有面板都会最小化和最大化几次,即如果列表中有三个元素,那么所有面板都会最大化/最小化三次。我错了吗?

嗯,这取决于您是否真的需要重新排序功能。如果您可以不使用它,我会尝试ui:repeat而不是p:orderList。它为每个div生成原始id,因此您一次只能切换一个面板。希望能有帮助

编辑: 我做了一个自定义的“切换器”,这样你甚至可以在p:orderList中单独切换面板

        <p:orderList id="videos" value="#{yourBean.list}" var="dataItem" itemValue="#{dataItem}"
                     controlsLocation="none">
            <p:column>
                <p:panel id="togglePanel">
                        <f:facet name="header">
                            <h:outputText value="#{dataItem}" />
                            <p:commandButton value="+" onclick="showToggle(this)" style="float: right;"/>
                            <p:commandButton value="-" onclick="hideToggle(this)" style="float: right;"/>
                            <div style="clear: both"/>
                        </f:facet>
                    <div>
                        FC Barcelona is one of only three clubs...
                    </div>
                </p:panel>
            </p:column>
        </p:orderList>

巴塞罗那是仅有的三家俱乐部之一。。。
还有简单的脚本:

<script type="text/javascript"> 

function hideToggle(param) {  
    jQuery(param).closest("div").next().slideUp('slow',null);     
}  
function showToggle(param) {  
    jQuery(param).closest("div").next().slideDown('slow',null);     
}

</script> 

函数隐藏切换(参数){
jQuery(param).closest(“div”).next().slideUp('slow',null);
}  
函数showToggle(参数){
jQuery(param).closest(“div”).next().slideDown('slow',null);
}

也许有更好的解决办法,但我相信你明白了。希望有帮助。

orderedList中是否支持多个带有widgetVar的面板?javascript变量“panel”似乎用于列表中的所有面板。你可以在firebug上看看。我认为@djmj是对的。为什么要指定
widgetVar
属性。您是否在javascript中使用它?即使没有
widgetWar
,也会发生这种情况。我在primefaces论坛上得到了一个答案:“问题是列表中的所有面板都具有相同的id,因此切换会切换所有面板”。但是我不知道我应该用什么来代替面板