2014-03-07 40 views
0

我有一個頁面,我可以通過p:commandButton打開一個對話框。如果沒有爲p:pickList設置converter-attribute,但是當對話框拒絕打開時,一切正常。轉換器屬性設置時PrimeFaces不打開對話框

這裏是XHTML(僅適用於相關的部分):

<p:dialog id="dialog" widgetVar="eventDialog" resizable="false" header="Event"> 

    <h:form> 

     <p:panelGrid id="eventPanel" columns="2"> 

      <h:outputLabel value="Participants" /> 

      <p:pickList id="participants" value="#{eventBean.dualList}" var="person" 
       itemValue="{person}" showCheckbox="true" 
       converter="#{eventBean.personConverter}" showSourceFilter="true"  
       showTargetFilter="true" filterMatchMode="contains" 
       itemLabel="#{person.name}, #{person.forename}" /> 

      <f:facet name="sourceCaption">Personen</f:facet> 
      <f:facet name="targetCaption">Participant</f:facet> 


      <p:commandButton value="Save" icon="ui-icon-disk" 
       action="#{eventBean.saveEvent()}" onsuccess="eventDialog.hide()" 
       update="@all" ajax="false" /> 

     </p:panelGrid> 

    </h:form> 

</p:dialog> 

<h:form id="eventForm"> 

    <p:commandButton value="Create Event" action="#{eventBean.createEvent()}"  
     oncomplete="eventDialog.show()" update=":dialog" styleClass="spaceBottom2" /> 

</h:form> 

和豆EventBean(僅相關部分):

@ManagedBean 
@ViewScoped 
public class EventBean { 

    public EventBean() {  
     converter = new PersonConverter(#list of persons); 
    } 

    public PersonConverter getPersonConverter() { 
     return converter; 
    } 
} 

我想不通爲什麼它是行不通的與轉換器,它做它應該在另一個頁面。

+0

1.不要試圖像現在這樣管理轉換器(調用'new'等)。適當地定義一個獨立的轉換器和參考。 2.看看你的JavaScript控制檯。如果您在網頁上發現任何轉換錯誤,它將出現在控制檯 – kolossus

+0

中,我假設您將其定義爲@FacesConverter,並且每次加載列表對我來說似乎都是不好的設計,或者是它不是? 我不知道你是什麼意思的JavaScript控制檯,但除了pickList轉換器工作正常。 – Rosty

+0

你是對的,你不應該每次都實例化一個列表。最佳做法是通過DAO將清單注入轉換器。通過Javascript控制檯,我的意思是你的瀏覽器中的開發者控制檯。大多數現代瀏覽器都在「開發人員工具」菜單下提供。 – kolossus

回答

0

在我與PF的經驗中,我總是把我的變量和getter和setters一樣調用,否則我遇到了很多問題。

在你的XML你有

converter="#{eventBean.personConverter}" 

我可能是錯的,但我相信它會查找getter方法變量personConverter

但是在你的bean中,你只需要調用變量converter。嘗試將其重命名爲personConverter

+0

奇怪,我從來沒有遇到過這樣的問題。我嘗試重命名變量,但沒有成功。謝謝你的努力。 – Rosty