2014-11-24 74 views
1

這應該很簡單,但我只是缺少一些東西。我的PrimeFaces日曆字段沒有調用setter方法。顯示頁面時會調用getter,但setter永遠不會被調用。Primefaces日曆不調用setter方法

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

<h:form id="timeframeTabForm"> 
    <div style="position:relative; left:85%;"> 
     <p:commandLink id="explainTimeframeTabId" style="text-decoration:underline;" value="#{i18n['help-text-tab-label']}" 
      onclick="PF('timeframeTabDialogVar').show()"/> 
    </div> 
    <p:selectOneRadio id="searchTimeframe" layout="custom" value="#{articleSearchFormBean.timeframe}"> 
     <f:selectItem itemValue="#{i18n['timeframe-last-1-hour-label']}" /> 
     <f:selectItem itemValue="#{i18n['timeframe-last-3-days-label']}" /> 
     <f:selectItem itemValue="#{i18n['timeframe-last-1-year-label']}" /> 
     <f:selectItem itemValue="#{i18n['timeframe-last-12-hours-label']}" /> 
     <f:selectItem itemValue="#{i18n['timeframe-last-7-days-label']}" /> 
     <f:selectItem itemValue="#{i18n['timeframe-last-2-years-label']}" /> 
     <f:selectItem itemValue="#{i18n['timeframe-last-24-hours-label']}" /> 
     <f:selectItem itemValue="#{i18n['timeframe-last-30-days-label']}" /> 
     <f:selectItem itemValue="#{i18n['timeframe-last-3-years-label']}" /> 
     <f:selectItem itemValue="#{i18n['timeframe-last-90-days-label']}" /> 
     <f:selectItem itemValue="#{i18n['timeframe-specify-dates-label']}" /> 
     <f:selectItem itemValue="#{i18n['timeframe-last-180-days-label']}" /> 
     <p:ajax /> 
    </p:selectOneRadio> 
    <h:panelGrid columns="3" cellspacing="15"> 
     <h:panelGrid columns="2" cellspacing="5"> 
      <p:radioButton id="timeframeOpt0" for="searchTimeframe" itemIndex="0" 
       onchange="document.getElementById('_listenerportlet_WAR_listenerportlet_:articleSearchForm:tabView:timeframeChecked').innerHTML = '(#{i18n['timeframe-last-1-hour-label']})';" /> 
      <h:outputLabel value="#{i18n['timeframe-last-1-hour-label']}" style="padding-left:10px;" /> 
     </h:panelGrid> 
     <h:panelGrid columns="2" cellspacing="5"> 
      <p:radioButton id="timeframeOpt1" for="searchTimeframe" itemIndex="1" style="padding-left:30px;" 
       onchange="document.getElementById('_listenerportlet_WAR_listenerportlet_:articleSearchForm:tabView:timeframeChecked').innerHTML = '(#{i18n['timeframe-last-3-days-label']})';" /> 
      <h:outputLabel value="#{i18n['timeframe-last-3-days-label']}" style="padding-left:10px;" /> 
     </h:panelGrid> 
     <h:panelGrid columns="2" cellspacing="5"> 
      <p:radioButton id="timeframeOpt2" for="searchTimeframe" itemIndex="2" style="padding-left:30px;" 
       onchange="document.getElementById('_listenerportlet_WAR_listenerportlet_:articleSearchForm:tabView:timeframeChecked').innerHTML = '(#{i18n['timeframe-last-1-year-label']})';" /> 
      <h:outputLabel value="#{i18n['timeframe-last-1-year-label']}" style="padding-left:10px;" /> 
     </h:panelGrid> 
     <h:panelGrid columns="2" cellspacing="5"> 
      <p:radioButton id="timeframeOpt3" for="searchTimeframe" itemIndex="3" 
       onchange="document.getElementById('_listenerportlet_WAR_listenerportlet_:articleSearchForm:tabView:timeframeChecked').innerHTML = '(#{i18n['timeframe-last-12-hours-label']})';" /> 
      <h:outputLabel value="#{i18n['timeframe-last-12-hours-label']}" style="padding-left:10px;" /> 
     </h:panelGrid> 
     <h:panelGrid columns="2" cellspacing="5"> 
      <p:radioButton id="timeframeOpt4" for="searchTimeframe" itemIndex="4" style="padding-left:30px;" 
       onchange="document.getElementById('_listenerportlet_WAR_listenerportlet_:articleSearchForm:tabView:timeframeChecked').innerHTML = '(#{i18n['timeframe-last-7-days-label']})';" /> 
      <h:outputLabel value="#{i18n['timeframe-last-7-days-label']}" style="padding-left:10px;" /> 
     </h:panelGrid> 
     <h:panelGrid columns="2" cellspacing="5"> 
      <p:radioButton id="timeframeOpt5" for="searchTimeframe" itemIndex="5" style="padding-left:30px;" 
       onchange="document.getElementById('_listenerportlet_WAR_listenerportlet_:articleSearchForm:tabView:timeframeChecked').innerHTML = '(#{i18n['timeframe-last-2-years-label']})';" /> 
      <h:outputLabel value="#{i18n['timeframe-last-2-years-label']}" style="padding-left:10px;" /> 
     </h:panelGrid> 
     <h:panelGrid columns="2" cellspacing="5"> 
      <p:radioButton id="timeframeOpt6" for="searchTimeframe" itemIndex="6" 
       onchange="document.getElementById('_listenerportlet_WAR_listenerportlet_:articleSearchForm:tabView:timeframeChecked').innerHTML = '(#{i18n['timeframe-last-24-hours-label']})';" /> 
      <h:outputLabel value="#{i18n['timeframe-last-24-hours-label']}" style="padding-left:10px;" /> 
     </h:panelGrid> 
     <h:panelGrid columns="2" cellspacing="5"> 
      <p:radioButton id="timeframeOpt7" for="searchTimeframe" itemIndex="7" style="padding-left:30px;" 
       onchange="document.getElementById('_listenerportlet_WAR_listenerportlet_:articleSearchForm:tabView:timeframeChecked').innerHTML = '(#{i18n['timeframe-last-30-days-label']})';" /> 
      <h:outputLabel value="#{i18n['timeframe-last-30-days-label']}" style="padding-left:10px;" /> 
     </h:panelGrid> 
     <h:panelGrid columns="2" cellspacing="5"> 
      <p:radioButton id="timeframeOpt8" for="searchTimeframe" itemIndex="8" style="padding-left:30px;" 
       onchange="document.getElementById('_listenerportlet_WAR_listenerportlet_:articleSearchForm:tabView:timeframeChecked').innerHTML = '(#{i18n['timeframe-last-3-years-label']})';" /> 
      <h:outputLabel value="#{i18n['timeframe-last-3-years-label']}" style="padding-left:10px;" /> 
     </h:panelGrid> 
     <h:outputText value=" " /> 
     <h:panelGrid columns="2" cellspacing="5"> 
      <p:radioButton id="timeframeOpt9" for="searchTimeframe" itemIndex="9" style="padding-left:30px;" 
       onchange="document.getElementById('_listenerportlet_WAR_listenerportlet_:articleSearchForm:tabView:timeframeChecked').innerHTML = '(#{i18n['timeframe-last-90-days-label']})';" /> 
      <h:outputLabel value="#{i18n['timeframe-last-90-days-label']}" style="padding-left:10px;" /> 
     </h:panelGrid> 
     <h:panelGrid columns="4" cellspacing="5"> 
      <p:radioButton id="timeframeOpt10" for="searchTimeframe" itemIndex="10" style="padding-left:30px;" 
       onchange="document.getElementById('_listenerportlet_WAR_listenerportlet_:articleSearchForm:tabView:timeframeChecked').innerHTML = '(#{i18n['timeframe-specify-dates-label']})';" /> 
      <h:outputLabel value="#{i18n['timeframe-specify-dates-label']}" style="padding-left:10px;" /> 
      <h:panelGrid columns="2" style="align-content:center;"> 
       <p:outputLabel value="#{i18n['timeframe-dates-start-label']}" /> 
       <h:outputText value=" " /> 
       <p:calendar id="timeframeStartButton" value="#{articleSearchFormBean.timeframeStart}" showOn="button" /> 
      </h:panelGrid> 
      <h:panelGrid columns="2"> 
       <h:outputText value="#{i18n['timeframe-dates-end-label']}" /> 
       <h:outputText value=" " /> 
       <p:calendar id="timeframeEndButton" value="#{articleSearchFormBean.timeframeEnd}" showOn="button" /> 
      </h:panelGrid> 
     </h:panelGrid> 
     <h:outputText value=" " /> 
     <h:panelGrid columns="2" cellspacing="5"> 
      <p:radioButton id="timeframeOpt11" for="searchTimeframe" itemIndex="11" style="padding-left:30px;" 
       onchange="document.getElementById('_listenerportlet_WAR_listenerportlet_:articleSearchForm:tabView:timeframeChecked').innerHTML = '(#{i18n['timeframe-last-180-days-label']})';" /> 
      <h:outputLabel value="#{i18n['timeframe-last-180-days-label']}" style="padding-left:10px;" /> 
     </h:panelGrid> 
     <h:outputText value=" " /> 
    </h:panelGrid> 
</h:form> 
<h:form id="timeframeTabButtonForm"> 
    <p:commandButton id='clear' value="#{i18n['tab-clear-button-label']}" 
     update=":#{component.namingContainer.parent.namingContainer.clientId}" 
     action="#{listenerArticleSearchFormController.clearTimeframeTabButtonListener}" process="@this"/> 
</h:form> 
<p:dialog header="Timeframe Tab Explained" widgetVar="timeframeTabDialogVar"> 
    <h:outputText value="#{i18n['timeframe-tab-description']}" /> 
</p:dialog> 

的獲取和設置方法的代碼段如下所示。

public Date getTimeframeStart() { 
    return timeframeStart; 
} 
public void setTimeframeStart(Date timeframeStart) { 
    this.timeframeStart = timeframeStart; 
} 

public Date getTimeframeEnd() { 
    return timeframeEnd; 
} 
public void setTimeframeEnd(Date timeframeEnd) { 
    this.timeframeEnd = timeframeEnd; 
} 

單選按鈕全部正常工作,正在進入後端,但由於某些原因,日曆字段不是。

我使用PrimeFaces 5.0

謝謝

回答

0

有關添加<p:ajax>什麼?

<p:calendar id="timeframeEndButton" value="#{articleSearchFormBean.timeframeEnd}" showOn="button" > 
<p:ajax event="dateSelect" process="@this"/> 
</p:calendar> 
0

如果你點擊提交按鈕和驗證是正確的,將被調用,primefaces日曆工作爲好。您可以測試它,在網頁中刪除/評論所有代碼,只添加日曆並嘗試提交,並直接在託管bean上輸出值,然後逐步添加代碼並逐步測試。