2017-03-04 48 views
1

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

这是选择列表定义

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

正在使用由字符串的两个List

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

列表加载正确组成,我能够管理对象的一个​​侧面另一个dualList对象。 enter image description here

直到这部分一切看起来不错。源对象和目标对象加载成功,并且选择列表功能正常。在创建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()是空的。那里有 零对象。 enter image description here

阅读Primefaces文档它说,该转换器需要对付你自己的类型。由于我使用普通香草列表,这是PickList组件的本地对象,我没有打算构建转换器类。

我在做什么错?

最好的问候, Neliosam

回答

0

无可厚非的代码。这个问题与范围有关。

PickList被用在模式对话框窗口中,并且不知何故,这并没有反映出dualList组件的变化。

我从对话窗口中删除组件,并添加到使用渲染=#{booleanCondition}

用一个模式对话框窗口时,我无法解释什么是限制,在需要时只呈现,但它阻止组件更新变量。

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

+0

所以,你有在表单内的对话框中的选择列表?现在它在对话之外,但仍然在形式? –

+0

嗨Jaquen;该表单是唯一的,我使用模板来构建页面。 pickList最初是设计在模态对话框窗口中的,我发现使用对话窗口有你的限制。我已经更改了代码,将选择列表放在只在需要时才呈现的面板中。 – Neliosam

+0

这听起来对你来说没有对话框中的表单,并且对话框的最后一页是?那怎么办 –