2

当对象加载时,pickList dualList 对象变为空。

这是选择列表定义

<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;

列表加载正确,我能够管理对象的一侧。 在此处输入图像描述

直到这部分一切看起来都很好。源对象和目标对象加载成功,并且选择列表正常工作。创建 dualList 后,我​​立即列出目标的内容,两者都在那里。

下面有一个按钮可以保存通过调用 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() 都是空的。那里有零个物体。 在此处输入图像描述

阅读 Primefaces 文档,它说需要转换器来处理您自己的类型。因为我使用的是普通的字符串列表,它是 pickList 组件的本机对象,所以我没有费心构建转换器类。

我究竟做错了什么?

最好的问候, Neliosam

4

1 回答 1

-1

代码没有任何问题。这个问题与范围有关。

pickList 正在模态对话框窗口中使用,并且不知何故这并未反映对 dualList 组件的更改。

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

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

希望这可以帮助其他面临同样问题的人!

于 2017-03-04T19:10:29.343 回答