当前位置: 首页 > 知识库问答 >
问题:

Primefaces p:orderList java支持列表不更新

广楚
2023-03-14

我目前正在使用PrimeFaces的组件实现一个可排序列表,嵌入在一个。然而,当我保存列表并将其提交回服务器时,由于某种原因,重新排列的项目没有反映在backing bean中。既然Primefaces showcase能够看到这些变化,那么我做错了什么呢?

XHTML代码段:

<h:form id="confirmDialogForm">
            <p:confirmDialog id="arrangeProjDialog" widgetVar="arrangeDlg" width="600"
                header="Meeting Order" 
                appendToBody="true" message="Drag and drop to rearrange meeting order">     

            <p:orderList id="arrangeProjDialogList" 
                value="#{adminMeetingListBean.orderProjList}"
                converter="#{adminMeetingListBean.rowConverter}"
                var="po"
                controlsLocation="left"
                styleClass="wideList"
                itemLabel="#{po.projectTitle}" 
                itemValue="#{po}"
                >
                <f:facet name="caption">Proposals</f:facet> 
            </p:orderList>

                <p:commandButton value="Save" ajax="true" process="arrangeProjDialogList @this" 
                    actionListener="#{adminMeetingListBean.updateProposalMeetingOrder}" onclick="arrangeDlg.hide();">
                </p:commandButton>
                <p:button value="Cancel" onclick="arrangeDlg.hide(); return false;" />
            </p:confirmDialog>  
        </h:form>

支持Bean:

public void updateProposalMeetingOrder() {

    if (selectedMeeting != null) {

        orderProjTitles.get(0);

        meetingService.updateMeetingProjSequence(orderProjList, selectedMeeting.getMeetingId());
    }

}

该列表是POJO“ProposalOrderRow”对象的列表。其定义如下:

public class ProposalOrderRow implements Serializable {

    private static final long serialVersionUID = -5012155654584965160L;

    private int dispSeq;
    private int appId;
    private int assignmentId;
    private String refNo;
    private String projectTitle;

    public int getDispSeq() {
        return dispSeq;
    }

    public void setDispSeq(int dispSeq) {
        this.dispSeq = dispSeq;
    }

    public int getAppId() {
        return appId;
    }

    public void setAppId(int appId) {
        this.appId = appId;
    }

    public String getRefNo() {
        return refNo;
    }

    public void setRefNo(String refNo) {
        this.refNo = refNo;
    }

    public String getProjectTitle() {
        return projectTitle;
    }

    public void setProjectTitle(String projectTitle) {
        this.projectTitle = projectTitle;
    }

    public int getAssignmentId() {
        return assignmentId;
    }

    public void setAssignmentId(int assignmentId) {
        this.assignmentId = assignmentId;
    }
}

转换器:

@FacesConverter("proposalOrderRowConverter")
public class ProposalOrderRowConverter implements Converter {

    private List<ProposalOrderRow> orderRows;

    @Override
    public Object getAsObject(FacesContext context, UIComponent component, String newValue) {

        if (newValue.isEmpty()) {
            return null;
        }

        for (ProposalOrderRow item : orderRows) {

            String refNo = item.getRefNo();

            if (refNo.equals(newValue)) {
                return item;
            }

        }

        return null;
    }

    @Override
    public String getAsString(FacesContext context, UIComponent component, Object value) {

        if (value == null) {
            return "";
        } 

        ProposalOrderRow row = (ProposalOrderRow) value;

        String output = row.getRefNo();

        return output;
    }

    public List<ProposalOrderRow> getOrderRows() {
        return orderRows;
    }

    public void setOrderRows(List<ProposalOrderRow> orderRows) {
        this.orderRows = orderRows;
    }

}

共有1个答案

鱼安然
2023-03-14

此问题是由确认对话框中的appendToBody="true "导致的。将其设置为false解决了问题。

请参阅此处的链接:链接

 类似资料:
  • SPI NOR FLASH 厂商 型号 ID Flash size Block size Page size issi ic25lp064 0x009d6017 8M 64K 256B paragon pn25f32 0x00e04016 4M 64K 256B pmc pm25lq032 0x007f9d46 4M 64K 256B spansion s25fl032 0x00010215 4M

  • 下面是一份已经对接到 RT-Therad Touch 框架上的 Touch 列表,点击 Touch 名称即可跳转到相应软件包主页。(本文档不定时更新,如要查看所有支持的 Touch 的列表,可以查看最新的软件包索引。 厂商 传感器 备注 GT gt9147 支持 5 点触控

  • SDIO接口 主芯片 备注 RTL8723BS WiFi + BT Combo, SDIO for WiFi, UART for BT 支持浅睡眠,可以快速唤醒无需重连网络 RTL8723DS WiFi + BT Combo, SDIO for WiFi, UART for BT 支持浅睡眠,可以快速唤醒无需重连网络 RTL8821CS 支持5G RTL8189ES AP6212A AP6236

  • 为什么我的应用程序显示为新的HTC Droid DNA不支持的设备,我的清单是这个应用程序只适用于具有这些功能的设备,正如您的应用程序清单中所定义的。屏幕密度:正常,LDPI正常,XHDPI正常,HDPI正常,MDPI小,LDPI小,XHDPI小,HDPI小,MDPI X大,LDPI X大,LDPI X大,HDPI X大,MDPI大,LDPI大,XHDPI大,HDPI大,LDPI大,XHDPI大,

  • 问题内容: 我需要读取一个用ISO-8859-1(也称为latin1)编码的文件,如下所示: 但是,Node抱怨“ latin1”或“ ISO-8859-1”不是有效的编码(“错误:未知编码”)。 接受什么编码? 问题答案: 该编码的列表节点支持本身是相当短的: ASCII base64 十六进制 ucs2 / ucs-2 / utf16le / utf-16le utf8 / utf-8 bin

  • 下面是一份已经对接到 RT-Therad Sensor 框架上的传感器的列表,点击传感器名称即可跳转到相应软件包主页。(本文档不定时更新,如要查看所有支持的传感器的列表,可以查看最新的软件包索引。 厂商 传感器 备注 BOSCH bma400 加速度计、计步计 bmi160 加速计、陀螺仪 bmx160 加速计、陀螺仪、磁力计 bme280 气压计、湿度计、温度计 Goertek spl0601