Primefaces picklist dualList对象变为空

时间:2017-03-04 13:23:13

标签: primefaces jsf-2 picklist

当对象加载时,pickList双列表对象变空。

这是选择列表定义

<p:pickList id="queuesPickList" 
            value="#{manageApplications.dualListQueuesToBeAddedToTheApplication}" 
            var="queueToAdd" itemLabel="#{queueToAdd}" itemValue="#{queueToAdd}">
</p:pickList>

正在使用的dualList对象由两个字符串列表

组成
private List<String> queuesSouce = new ArrayList<>();
private List<String> queuesTarget = new ArrayList<>();
private DualListModel<String> dualListQueuesToBeAddedToTheApplication;

列表正确加载,我能够管理另一侧的对象。 enter image description here

直到这部分一切都看起来不错。源和目标对象成功加载,选择列表正常运行。创建双列表后,我立即列出目标的内容,两者都在那里。

下方有一个按钮可以保存通过调用actionListener所做的更改。

<p:commandButton value="SAVE" id="saveQueuesButton" 
                 actionListener="#{manageApplications.saveQueuesToTheApplication()}"
                 oncomplete="PF('dlgAddQueuesToApplication').hide();"
                 update="addQueuesToApplicationPanel">
</p:commandButton>

现在的actionListener只是打印来自dualList对象的值。

public void saveQueuesToTheApplication() {       
            System.out.println(this.dualListQueuesToBeAddedToTheApplication.getTarget());
    }
  

现在,.target()和.souce()都是空的。零中有一个对象   那里。   enter image description here

阅读Primefaces文档,它说需要转换器来处理你自己的类型。由于我使用的是简单的字符串List of Strings,它是pickList组件的本机对象,所以我没有费心去构建转换器类。

我做错了什么?

最好的问候, Neliosam

1 个答案:

答案 0 :(得分:-1)

代码中有没有错误。这个问题与范围有关。

pickList在模态对话框窗口中使用,并且不知道这是否反映了对dualList组件的更改。

我已从对话框窗口中删除该组件,并添加到仅在需要时使用<h:panelGroup>呈现的rendered=#{booleanCondition}

我无法准确解释使用模态对话框窗口时的限制,但是它阻止了组件更新变量。

希望这有助于其他人面对同样的问题!