2015-09-07 117 views
0

我在我的页面上有两个PrimeFaces日历控件,在Tabview中。我有一个定义为弹出(默认模式),另一个是按钮。p:日历不工作在p:tabView

相关输入字段出现在页面上,并且它们具有来自我的bean的默认日期,但日历控件不显示。我也试过mode="inline"但日历不显示。

<div class="ui-grid ui-grid-responsive"> 
    <div class="ui-grid-row"> 
    <div class="ui-grid-col-3"> 
     <p:panel> 
     <h:form id="coursesListForm"> 
      <p:dataTable id="coursesList" value="#{manageClasses.courses}" var="course" rowKey="#{course.idAsString}" selectionMode="single" selection="#{manageClasses.selectedCourse}"> 
      <p:ajax event="rowSelect" process="@all" update="@form, tabView" /> 
      <p:column headerText="#{text['name']}"> 
       <h:outputText value="#{course.displayString}" /> 
      </p:column> 
      </p:dataTable> 
     </h:form> 
     </p:panel> 
    </div> 
    <div class="ui-grid-col-9"> 
     <p:tabView id="tabView" activeIndex="#{manageClasses.tabIndex}" disabled="#{manageClasses.isTabViewDisabled}"> 
     <p:ajax event="tabChange" listener="#{manageClasses.onTabChange}" /> 
     <p:tab title="#{text['reports']}" id="reportTab"> 
      <h:form id="reportForm"> 
      <p:panelGrid columns="2"> 
       <p:outputLabel for="fromDateCalendar" value="#{text['Reports.from']}" /> 
       <p:calendar id="fromDateCalendar" value="#{reportRequest.fromDate}" showOn="button" /> 
       <p:outputLabel for="toDateCalendar" value="#{text['Reports.to']}" /> 
       <p:calendar id="toDateCalendar" value="#{reportRequest.toDate}" /> 
      </p:panelGrid> 
      </h:form> 
     </p:tab> 
     </p:tabView> 
    </div> 
    </div> 

回答

0

这是由声明jquery.js库的菜单部分中无关的javascript引起的。当我删除有问题的导入时,所有奇怪的Primefaces错误都消失了。它似乎声明其他jquery库干扰Primefaces代码。

0

尽量把所有的PrimeFace组件内h:form - 目前你有例如这样的:

<p:panel> 
    <h:form id="coursesListForm"> 
    ...some content... 
    </h:form> 
</p:panel> 

虽然它看起来应该相当类似:

<h:form id="coursesListForm"> 
    <p:panel> 
    ...some content... 
    </p:panel> 
</h:form> 

同样应用第二个h:form完成 - 确保<h:form id="reportForm">包含<p:tabView id="tabView"和所有相关内容。

您可能还需要在更改完成后重新部署,我的JBoss有时“没有注意到”更改并坚持提供原始内容。

+0

我没有意识到将所有的primefaces组件放在窗体中是好的形式。一个问题是我不能将tabView放在一个表单中,因为我有大量的表单(每个表单至少有一个表单)。我使用表单来帮助划分我的ajax功能(仅处理和更新必要的表单)这是错误的吗? – Ramesh

+0

从我的角度来看,将页面上的表格数量尽可能减少总是最好的。如果您花费了一些时间重构过程/更新属性,以仅使用特定场景中需要触及的组件,则最终可能会显着减少网络流量(尽量避免使用通用的@all或@(表单)选择器(如果可以的话) - 指定ID列表也可以完成这项工作)。 –

+0

此外,如果我没有弄错,PF选择符的正确形式是“@(form)”,而不是“@ form”(注意括号)。此外,这些ID应该用空格分隔,而不是逗号。 –