Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.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
Jsf Primefaces:如何从p:orderList持久化重新排序的数据?_Jsf_Jsf 2_Primefaces - Fatal编程技术网

Jsf Primefaces:如何从p:orderList持久化重新排序的数据?

Jsf Primefaces:如何从p:orderList持久化重新排序的数据?,jsf,jsf-2,primefaces,Jsf,Jsf 2,Primefaces,我仍在使用primefaces组件p:orderlist。 我已经实现了拖放行为(将其他列表中的项目放入p:orderlist),并且我还使p:commandButton在p:orderlist中工作 现在我有一个新问题。您可以在p:order列表中拖放项目,以给它们一个新的顺序。(这就是为什么该组件被称为orderlist,与购物订单无关;-)) 但是,如果我重新排序我的项目,我就不会收到通知或事件,这会告诉我的bean,有些东西已经改变了 有人知道如何使这成为可能吗 这是我的p:orderl

我仍在使用primefaces组件p:orderlist。 我已经实现了拖放行为(将其他列表中的项目放入p:orderlist),并且我还使p:commandButton在p:orderlist中工作

现在我有一个新问题。您可以在p:order列表中拖放项目,以给它们一个新的顺序。(这就是为什么该组件被称为orderlist,与购物订单无关;-))

但是,如果我重新排序我的项目,我就不会收到通知或事件,这会告诉我的bean,有些东西已经改变了

有人知道如何使这成为可能吗

这是我的p:orderlist,看起来像你知道的:

 <h:panelGroup>

           <p:remoteCommand name="removeTechniker" actionListener="#{systemlandschaftRessourceHandler.removeTechnikerByRemoteCommand}"
                     out="technikersTable" update="@form"/>

           <p:orderList id="technikersTable"
                        value="#{systemlandschaftRessourceHandler.entity.technikers}" 
                        var="_techniker"  
                        itemValue="#{_techniker}" 
                        converter="#{entityConverter}"
                        controlsLocation="none">  

                <f:facet name="caption">Techniker</f:facet>  

                <p:column>    
                    <p:commandButton id="deleteTechnikerFromListButton" 
                                    styleClass="colButton" 
                                    icon="ui-icon-trash" 
                                    type="button" 
                                    onclick="removeTechniker([{name:'id', value:'#{_techniker.id}'}]);"
                                    update="@form"/>
                </p:column>
                <p:column style="width:75%;" id="outTech">  
                   <p:outputLabel value="#{_techniker.verantwortlich.displayName}"/>
                </p:column>

            </p:orderList>

            <p:droppable id="technikerDrop" 
                        for="technikersTable" 
                        tolerance="touch" 
                        activeStyleClass="ui-state-highlight" 
                        datasource=":systemLandschaftTabView:sysObjektDetailPanelForm:userTable" 
                        scope="userDraggable">  
                    <p:ajax listener="#{systemlandschaftRessourceHandler.onDropTechniker}" update="@form" />  
            </p:droppable>  
            </h:panelGroup>

技术工
我已经在primefaces社区找到了一些东西,但这不起作用,甚至不能说为什么。 链接:

问候 伊斯特里克

仅供参考,以下是关于p:orderlist的已解决项目:


我自己想出了一个解决办法。 这是一种黑客行为,但很有效。 我使用列表的setter,我希望对其进行排序并将其发送到数据库。为了阅读列表,我在getter上使用@OrderBy注释

@OrderBy("ranking ASC")
    @ManyToMany(fetch = FetchType.LAZY)
    @JoinTable(name="MWEB_SYSLAND_RES_ENTWUSER_L", joinColumns = {@JoinColumn(name = "ID_SYSLAND_RES", nullable = false, updatable = false)} ,inverseJoinColumns = { @JoinColumn(name ="ID_SYSLAND_USER", nullable = false, updatable = false) })
    public List<SystemlandschaftUser> getEntwicklers() {
        return entwicklers;
    }

    public void setEntwicklers(List<SystemlandschaftUser> entwicklers) {
        this.entwicklers = sortSysUserList(entwicklers);

@Transient
    private List<SystemlandschaftUser> sortSysUserList(List<SystemlandschaftUser> input){
        if(input != null && input.size() > 0){
            for(int i=1, size=input.size(); i <= size; i++){
                SystemlandschaftUser t = input.get(i-1);
                t.setRanking(i);
            }
        }
        return input;
    }
@OrderBy(“排名ASC”)
@ManyToMany(fetch=FetchType.LAZY)
@JoinTable(name=“MWEB_SYSLAND_RES_ENTWUSER_L”,joinColumns={@JoinColumn(name=“ID_SYSLAND_RES”,nullable=false,updateable=false)},inverseJoinColumns={@JoinColumn(name=“ID_SYSLAND_USER”,nullable=false,updateable=false)})
公共列表getentwickler(){
返回入口门;
}
公共无效设置入口入口(列表入口入口入口){
this.entwickler=sortSysUserList(entwickler);
@短暂的
私有列表sortSysUserList(列表输入){
if(input!=null&&input.size()>0){

对于(int i=1,size=input.size();我在这附近有一个
吗?是的,有h:form标记。整个页面有2个表单(不是嵌套的)、4个p:orderlist组件(看起来都一样)、4个p:dataTables和其他几个项目。如果需要,我可以发布整个页面,但它确实很大。