2013-01-10 77 views
0

我正在開發一個web應用程序,使用3.4.2版本的Primefaces。我有一個p:pickList就可以了。應用程序正在使用常規模板工作,每個頁面將替換正在爲每個請求重新加載的模板的general_content。我的問題是,選擇列表不工作(不能與它交互),因爲當我加載頁面時發生一些JavaScript錯誤。這是我的XHTML:Primefaces 3.4.2 javascript錯誤

<ui:composition xmlns="http://www.w3.org/1999/xhtml" 
xmlns:ui="http://java.sun.com/jsf/facelets" 
xmlns:f="http://java.sun.com/jsf/core" 
xmlns:h="http://java.sun.com/jsf/html" 
xmlns:c="http://java.sun.com/jsp/jstl/core" 
xmlns:p="http://primefaces.org/ui" 
template="/templates/general_template.xhtml"> 

<ui:define name="metadata"> 
    <f:metadata> 
     <f:viewParam id="user" name="user" 
      value="#{navegableUserData._ParamUser}" /> 

     <f:viewParam id="NavIndex" name="NavIndex" 
      value="#{navegableUserData._QueueIndex}" /> 
     <f:event type="preRenderView" 
      listener="#{navegableUserData.initialize}" /> 
    </f:metadata> 
    <h:message for="user" /> 
</ui:define> 

<ui:define name="general_content"> 
    <h:form id="SystemUserForm"> 
     <p:pickList id="rolePickList" value="#{navegableUserData._ListRoles}" 
      var="role" itemValue="#{role}" converter="rolConverter"> 
      <f:facet name="sourceCaption"> 
       <h:outputText value="#{msg.AVAILABLE}" /> 
      </f:facet> 
      <f:facet name="targetCaption"> 
       <h:outputText value="#{msg.ASSIGNED}" /> 
      </f:facet> 

      <p:column> 
       <h:outputText value="#{role._Nombre}" /> 
      </p:column> 
     </p:pickList> 
    </h:form> 
</ui:define> 

這是JavaScript錯誤我:

Firefox中的Firebug

螢火蟲告訴我該元素a,不能被發現第一行primefaces.js

"a is undefined" 
PrimeFaces={escapeClientId:function(a){return"#"+a.replace(/:/g,"\\:")}, 
... 

督察在Chrome

Uncaught TypeError: Cannot call method 'replace' of undefined primefaces.js.xhtml:1 
PrimeFaces.escapeHTML primefaces.js.xhtml:1 
(anonymous function) primefaces.js.xhtml:27 
bG.extend.each jquery.js.xhtml:14 
bG.fn.bG.each jquery.js.xhtml:14 
PrimeFaces.widget.PickList.PrimeFaces.widget.BaseWidget.extend.generateItems primefaces.js.xhtml:27 
PrimeFaces.widget.PickList.PrimeFaces.widget.BaseWidget.extend.init primefaces.js.xhtml:27 
e.(anonymous function) jquery.js.xhtml:373 
c jquery.js.xhtml:373 
PrimeFaces.createWidget primefaces.js.xhtml:1 
PrimeFaces.cw primefaces.js.xhtml:1 
(anonymous function) 

看起來有些jQuery是失敗的。隨着Prime的以前版本,3.4.1,一切工作正常。

+0

在螢火蟲,嘗試把一個breakmark在該行(腳本選項卡),當它停下看看它說的鼠標懸停提示這個'函數(a)'參數。它可以調用沒有ID的元素上的函數,如果是這種情況,也許它是PF 3.4.2上的錯誤(你不能降級PF庫嗎?) – Mindwin

+0

我已經用Firebug進行了測試,它給了我未定義的值。使用JSF * 2.1.15-2.1.16 *進行測試。當然,我可以降級它,但我只是想知道它爲什麼會發生。 –

回答

3

p:pickList(primefaces v3.4.2)需要指定itemLabel。

只需添加

itemLabel="#{role}" 

到您的電話號碼:PICKLIST

+0

問題解決。 PF文檔根本不指定哪些屬性是必需的。這種錯誤然後更難以調試。謝謝。 –