2016-04-25 86 views
-2

我知道它已被問了好幾次,但我沒有找到解決方案。我正在嘗試使用p:calendar,但它並未彈出,只顯示文本字段。其他組件工作正常。我正在使用PrimeFaces 5.3和mojarra 2.2。另外我正在使用jsf模板。我試着在這個視圖中添加主模板文件以及<h:head>標籤。日曆顯示在對話框組件中。這裏是我的代碼:p:日曆沒有彈出

<html xmlns="http://www.w3.org/1999/xhtml" 
    xmlns:ui="http://java.sun.com/jsf/facelets" 
    xmlns:h="http://xmlns.jcp.org/jsf/html" 
    xmlns:f="http://java.sun.com/jsf/core" 
    xmlns:p="http://primefaces.org/ui"> 
    <h:head> 
     <f:metadata> 
      <f:viewAction actionListener="#{providerController.onLoad()}" /> 
     </f:metadata> 
    </h:head> 

    <h:body> 
     <ui:composition template="/Views/Template/MainTemplate.xhtml"> 
      <ui:define name="pageTitle"> 
      Welcome [Dashboard.xhtml] 
      </ui:define> 

      <ui:define name="mainContent"> 
      <h:outputScript library="primefaces" name="jquery/jquery.js"/> 

       <h2>Provider Details</h2> 
<p:calendar id="cal" showOn="button" /> 
       <h:form rendered="#{providerController.canCreateProvider()}"> 
        <p:commandButton value="Create" update=":myForm" 
         action="#{providerController.createProviderClicked()}" 
         oncomplete="PF('Dlg1').show();" /> 
        <br /> 
       </h:form> 

       <h:form id="mainForm"> 
        <p:dataTable value="#{providerController.providerList}" 
         var="provider"> 

<!-- <p:inputText value="#{providerController.providerSearchText}"> 
         <f:ajax event="change" listener="#{providerController.providerSearchTextChanged()}"></f:ajax> 
         </p:inputText> --> 
         <p:column headerText="Provider Name" filterMatchMode="contains" filterBy="#{provider.getFullName()}"> 

          #{provider.getFullName()} 
         </p:column> 

         <p:column headerText="Npi Number"> 
          #{provider.npiNum} 
         </p:column> 

         <p:column headerText="Entity"> 
          #{provider.centity.name} 
         </p:column> 

         <p:column headerText="Practices"> 
          <table> 
           <ui:repeat value="#{provider.practiceList.toArray()}" var="t"> 
            <tr> 
             <td style="border: 0px;"><h:outputText value="#{t.name}" /> 
             </td> 
            </tr> 
           </ui:repeat> 
          </table> 

          <!--      <p:selectOneMenu id="advanced" 
           panelStyle="width:180px" 
           effect="fade" var="t" style="width:160px"> 
           <f:selectItems value="#{provider.practiceList.toArray()}" var="practise" 
            itemLabel="#{practise.name}" itemValue="#{practise}" /> 

           <p:column> 
            <h:outputText value="#{t.name}" /> 
           </p:column> 

          </p:selectOneMenu> --> 
         </p:column> 

         <p:column headerText="Edit" width="80" 
          rendered="#{providerController.canEditProvider()}"> 
          <p:commandButton icon="ui-icon-pencil" update=":myForm" 
           oncomplete="PF('Dlg1').show();" 
           action="#{providerController.updateClicked(provider)}" /> 

          <p:commandButton icon="ui-icon-close" update=":mainForm" 
           resetValues="true" 
           action="#{providerController.removeClicked(provider)}" 
           rendered="#{providerController.shouldShowDelete()}"> 

           <p:confirm header="Confirmation" message="Are you sure?" 
            icon="ui-icon-alert" /> 
          </p:commandButton> 

          <p:confirmDialog global="true" showEffect="fade" 
           hideEffect="fade"> 
           <p:commandButton value="Yes" type="button" 
            styleClass="ui-confirmdialog-yes" icon="ui-icon-check" /> 
           <p:commandButton value="No" type="button" 
            styleClass="ui-confirmdialog-no" icon="ui-icon-close" /> 
          </p:confirmDialog> 

         </p:column> 
        </p:dataTable> 
       </h:form> 

       <!-- ADD/EDIT DIALOG --> 

       <p:dialog id="providerDialog" header="Provider" modal="true" 
        position="top" widgetVar="Dlg1" minHeight="40"> 

        <h:form id="myForm"> 
         <p:messages id="msgs" /> 

         <h:panelGrid columns="2" cellpadding="8"> 
          <p:outputLabel id="entity" 
           value="#{providerController.getFirstEntityName()}" 
           rendered="#{providerController.isSingleItemInEntityList()}" /> 

          <p:selectOneMenu id="entities" 
           value="#{providerController.currentEntity}" 
           panelStyle="width:180px" effect="fade" required="true" 
           style="width:177px" 
           rendered="#{!providerController.isSingleItemInEntityList()}" 
           disabled="#{providerController.getIsEntityListDisabled()}"> 

           <p:ajax listener="#{providerController.onEntityChange}" 
            update="myPractices" /> 

           <f:selectItem itemLabel="Select Entity" /> 
           <f:selectItems value="#{providerController.entityList}" 
            var="entity" itemLabel="#{entity.name}" 
            itemValue="#{entity.getId()}" /> 

           <!-- <p:column> 
            <h:outputText value="#{t.name}" /> 
           </p:column> --> 
          </p:selectOneMenu> 

          <p:selectCheckboxMenu id="myPractices" 
           value="#{providerController.selectedPractices}" 
           label="Select Practices" filter="true" 
           filterMatchMode="startsWith" style="width:177px" var="t" 
           panelStyle="width:250px"> 

           <f:selectItems value="#{providerController.practiceList}" 
            var="practice" itemLabel="#{practice.name}" 
            itemValue="#{practice.getId()}" /> 

           <!-- <p:column> 
            <h:outputText value="#{t.name}" /> 
           </p:column> --> 

          </p:selectCheckboxMenu> 

          <!-- <p:selectCheckboxMenu value="#{providerController.selectedPayers}" label="Select Payers" 
          filter="false" filterMatchMode="startsWith" style="width:177px" var="t" required="true" 
          converter="payerConverter" panelStyle="width:250px"> 

          <f:selectItems value="#{providerController.payerList}" var="payer" 
           itemLabel="#{payer.name} #{payer.planName}" itemValue="#{payer}" /> 

          <p:column> 
           <h:outputText value="#{t.name}" /> 
          </p:column> 

         </p:selectCheckboxMenu> --> 

          <p:inputText id="NpiNumber" 
           value="#{providerController.provider.npiNum}" 
           placeholder="Npi Number" maxlength="10" label="NPI" 
           required="true" 
           validatorMessage="NPI should only digits and length 10"> 
           <!-- validator="npiValidator" --> 
           <f:validateRegex for="NpiNumber" pattern="[0-9]{10}" /> 
           <!-- <f:convertNumber integerOnly="true"/> --> 

          </p:inputText> 
          <p:inputText value="#{providerController.provider.firstName}" 
           placeholder="First Name" label="FirstName" required="true" /> 
          <p:inputText value="#{providerController.provider.lastName}" 
           placeholder="Last Name" label="Last Name" required="true" /> 

         </h:panelGrid> 

         <br /> 
         <h:dataTable id="filesTable" 
          value="#{providerController.documentCells}" var="docCell"> 

          <p:column> 
          <p:calendar id="cal" value="#{docCell.document.effectiveDate}" showOn="button" /> 
           <p:row style="border: 3px solid blue;"> 
            <b><h:outputLabel for="fileUpload" 
              value="#{docCell.lbName}" styleClass="#{docCell.getColorClassName()}" /></b> 
            <br /> 

            <h:outputLabel value="Existing File: " for="idFileName" styleClass="#{docCell.getColorClassName()}" /> 
            <h:outputLabel id="idFileName" 
             value="#{docCell.document.orignalName}" styleClass="#{docCell.getColorClassName()}" /> 
            <br /> 
            <p:fileUpload value="#{docCell.document.orignalName}" 
             fileUploadListener="#{providerController.handleFileUpload}" 
             mode="advanced" dragDropSupport="false" fileLimit="3" 
             sizeLimit="5242880" allowTypes="/(\.|\/)(pdf|doc?x|png|txt)$/" 
             update=":myForm" label="Browse..." 
             > 

             <f:attribute name="name" value="#{docCell}" /> 

            </p:fileUpload> 
           </p:row> 
          </p:column> 

          <p:column headerText="Remove"> 

           <p:commandButton icon="ui-icon-trash" 
            action="#{providerController.deleteFileClicked(docCell)}" 
            update=":myForm"> 

            <p:confirm header="Confirmation" message="Are you sure?" 
             icon="ui-icon-alert" /> 
           </p:commandButton> 

           <p:confirmDialog global="true" showEffect="fade" 
            hideEffect="fade"> 
            <p:commandButton value="Yes" type="button" 
             styleClass="ui-confirmdialog-yes" icon="ui-icon-check" /> 
            <p:commandButton value="No" type="button" 
             styleClass="ui-confirmdialog-no" icon="ui-icon-close" /> 
           </p:confirmDialog> 

          </p:column> 


         </h:dataTable> 

         <p:commandButton id="btnSave" value="Save" validateClient="true" 
          actionListener="#{providerController.saveInfo}" 
          update="msgs, :mainForm" /> 




         <p:blockUI trigger="myForm:btnSave" block="providerDialog"> 
      LOADING<br /> 
          <p:graphicImage value="/Images/loading.gif" width="75" 
           height="75" /> 
         </p:blockUI> 
        </h:form> 


       </p:dialog> 


       <style> 
#providerDialog { 
    position: absolute !important; 
} 

.red{color:red} 
.green{color:green} 
</style> 
      </ui:define> 
     </ui:composition> 
    </h:body> 
</html> 
+1

代碼太多,試圖縮小問題的範圍。 [mcve] – Geinmachi

+0

如果您使用技術,請確保您正確書寫名稱(PrimeFaces,Mojarra)。如果你在搜索引擎中犯了同樣的錯誤,你可能得不到好的命中。並請閱讀http://stackoverflow.com/tags/jsf/info到 – Kukeltje

+0

Afaik你不應該手動包括jquery,它將被注入到h:頭 –

回答

0

儘量把你的p:calendar組件到h:form。它在他們之外。

+0

或它是嵌套的形式! – Kukeltje