這應該很簡單,但我只是缺少一些東西。我的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
謝謝