Primefaces日历未调用setter方法

Primefaces日历未调用setter方法,primefaces,Primefaces,这应该很简单,但我只是错过了一些东西。我的PrimeFaces日历字段未调用setter方法。显示页面时调用getter,但从不调用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"

这应该很简单,但我只是错过了一些东西。我的PrimeFaces日历字段未调用setter方法。显示页面时调用getter,但从不调用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>
单选按钮都可以正常工作,并且可以进入后端,但由于某些原因,日历字段不能正常工作

我正在使用PrimeFaces5.0

谢谢

添加内容怎么样

i、 e


如果您单击“提交”按钮,并且验证正确,则会调用它,primefaces日历也会正常工作。在逐步添加代码并在每个步骤中进行测试之后,您可以对其进行测试、删除/注释网页中的所有代码、仅放置日历并尝试提交,以及直接在托管bean上输出值

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;
}
<p:calendar id="timeframeEndButton" value="#{articleSearchFormBean.timeframeEnd}" showOn="button" >
<p:ajax event="dateSelect" process="@this"/>
</p:calendar>