2017-03-04 42 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

這聽起來對你來說沒有對話框中的表單,並且對話框的最後一頁是?那怎麼辦 –