当对象加载时,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;
直到这部分一切都看起来不错。源和目标对象成功加载,选择列表正常运行。创建双列表后,我立即列出源和目标的内容,两者都在那里。
下方有一个按钮可以保存通过调用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());
}
阅读Primefaces文档,它说需要转换器来处理你自己的类型。由于我使用的是简单的字符串List of Strings,它是pickList组件的本机对象,所以我没有费心去构建转换器类。
我做错了什么?
最好的问候, Neliosam
答案 0 :(得分:-1)
代码中有没有错误。这个问题与范围有关。
pickList在模态对话框窗口中使用,并且不知道这是否反映了对dualList组件的更改。
我已从对话框窗口中删除该组件,并添加到仅在需要时使用<h:panelGroup>
呈现的rendered=#{booleanCondition}
。
我无法准确解释使用模态对话框窗口时的限制,但是它阻止了组件更新变量。
希望这有助于其他人面对同样的问题!