2013-02-11 141 views
0

我遇到了JSF/Primefaces顯示彈出窗口的問題。作爲背景,我使用JSF模板生成我的頁面:p:對話框不顯示

內聯工作顯示數據表,但是當我單擊按鈕顯示對話框時,什麼都不會發生。我在日誌中看不到任何錯誤。

<h:body> 
    <p:dataTable id="lstUsers" var="u" value="#{userController.userList}" selectionMode="single" 
       selection="#{userController.selectedUser}" rowKey="#{u.login}" paginator="true" rows="10"> 
     <p:column headerText="Username"> 
      <h:outputLabel value="#{u.login}"></h:outputLabel> 
     </p:column> 
     <p:column headerText="Role" rowspan="2"> 
      <h:outputLabel value="#{u.role}"></h:outputLabel> 
     </p:column> 
     <f:facet name="footer"> 
      <p:commandButton id="bttAdd" type="button" value="Add" update=":contentView:idPanelPop" oncomplete="userDialog.show()" ></p:commandButton> 
      <p:commandButton id="bttEdit" value="Edit"></p:commandButton> 
      <p:commandButton id="bttRemove" value="Remove"></p:commandButton> 
     </f:facet> 
    </p:dataTable> 
    <p:dialog id='userDialog' header="User Details" widgetVar="userDialog" 
       resizable="false" width="200px" height="200px" showEffect="clip" hideEffect="fold"> 
     <h:panelGrid id="idPanelPop" columns="2"> 
      <h:outputLabel id='dOutUser' value="Username"></h:outputLabel> 
      <h:outputLabel id='dOutUserValue' value="#{userController.selectedUser.login}"></h:outputLabel> 

      <h:outputLabel id='dOutRole' value="Role"></h:outputLabel> 
      <h:outputLabel id='dOutRoleValue' value="#{userController.selectedUser.role}"></h:outputLabel> 
     </h:panelGrid> 
    </p:dialog> 
</h:body> 

上面的代碼被用作

<ui:composition template="./maintemplate.xhtml" 
       xmlns:h="http://java.sun.com/jsf/html" 
       xmlns:p="http://primefaces.org/ui" 
       xmlns:ui="http://java.sun.com/jsf/facelets"> 
    <ui:define id="contentViewIndex" name="content"> 
     <ui:include src="#{navigationController.currentPage}"></ui:include> 
    </ui:define> 
</ui:composition> 

我的模板頁面的部分包括以下內容:

 <p:layoutUnit position="center"> 
       <h:form id="contentView"> 
        <ui:insert name="content"> 
          Default Content 
        </ui:insert> 
       </h:form>  
     </p:layoutUnit> 

navigationController.current價值變動按菜單點擊導航橫跨頁面。 我正在關注的公報primafaces展示PrimeFaces datatable

我目前的設置是Netbeans的7.3 RC1 /阿帕奇7.0.34.0 /鑽嘴魚科2.1.13

我會appreacite如果有人可以點我朝着正確的方向解決這個:)

編輯:考慮到內聯的答案沒有什麼作品。 也許我應該先檢查瀏覽器控制檯,在這種情況下,它很奇怪,因爲它抱怨它不識別widgedVar。 我已經試圖把對話框外部的窗體和結果是相同的錯誤。 :/

+0

可能的重複:http://stackoverflow.com/q/14381602/1530938 – kolossus 2013-02-11 14:26:42

+0

感謝您的提示,但不幸的是發生了什麼不適用於我的情況。我的表單是模板的一部分,它內部調用需要呈現的頁面。這樣我可以在網站中導航並動態更新內容。 我會盡量讓頁面作爲獨立的,看看它是否工作。 – 2013-02-11 15:03:49

回答

0

發現問題...

經過大量的試驗和挖掘,並考慮到以前的答案。問題是兩件事:

1st。對角線的高度和寬度不能有px。

2nd。並根據以前的答案,它必須在 here解釋。

p:對話框的大小不能有px。

0

您的bttAdd按鈕是普通按鈕(您可以用type="button"屬性明確設置它)。這意味着它只是做一些JavaScript,沒有任何AJAX請求。要做一個AJAX請求,並更新你的面板刪除type="button"並嘗試比。

+0

刪除類型=「按鈕」不起作用:/ – 2013-02-11 12:51:31

0

我會改變兩件事(第一也許並不重要):

  1. 添加2種形式:一種是內部的數據表和其他內部對話
  2. 變化widgetVar =「userDialog」,以獨特的東西。 widgetVar =「userDialogWidget」
+0

如果我這樣做,我將有

!從我從內部閱讀的內容來看,這是一個糟糕的主意。對? – 2013-02-11 12:53:01

+0

我不確定。您可以檢查生成的來源。如何更改widgetVar名稱? – Darka 2013-02-11 14:01:36

+0

只是改變無濟於事。將widgetVar更改爲唯一值,並將oncomplete更新爲指向widgetVar。但沒有。當你看到@ kolossus給你我所說的話時, – 2013-02-11 14:50:48