以下的primefaces code,
可以做出讓calendar的起始日期、到期日期範圍被限制在一個範圍的效果,
例如起始日期選擇2020/6/27,那麼到期日期就只能從2020/6/27開始選擇,6/26以前的日期不能選;或是到期日期選擇2020/6/25,那麼起始日期就只能從2020/6/24之前開始選:
<p:column>
<p:calendar id="fromDate" showOn="both" value="#{testAction.fromDate}"
binding="#{fromDate}" maxdate="#{toDate.value}">
<p:ajax event="dateSelect" partialSubmit="true"
process="@this, toDate" update="@this, toDate" />
<p:ajax event="change" partialSubmit="true"
process="@this, toDate" update="@this, toDate" />
</p:calendar>
</p:column>
<p:column>
<p:calendar id="toDate" value="#{testAction.toDate}" showOn="button"
binding="#{toDate}" mindate="#{fromDate.value}">
<p:ajax event="dateSelect" partialSubmit="true"
process="@this, fromDate" update="@this, fromDate" />
<p:ajax event="change" partialSubmit="true"
process="@this, fromDate" update="@this, fromDate" />
</p:calendar>
</p:column>
看起來是primefaces ajax的功能,不過在這邊ajax的設定,除了設定觸發的事件外,只是將日期所在的欄位id,透過process屬性,餵進ajax,並透過partialSubmit屬性提交欄位值,也就是起始日期與到期日期;
並且透過update屬性,設定要刷新的欄位id。除此之外並沒有設定對應的code來處理提交的欄位值,那麼提交出去的欄位是如何處理的呢?是利用primefaces ajax或calendar自身的設定或功能來處理嗎?
還有為甚麼觸發的事件會用到dateSelect、change這兩個??日期改變就要能自動修改日期範圍不是嗎?那不能只用change事件就好?