PrimeFaces のカレンダー コンポーネントを使用します。
<p:calendar id="hotelCalendar"
mode="inline"
beforeShowDay="disableDates"
pages="1">
<p:ajax event="dateSelect" listener="#{apartments.handleDateSelect}"
oncomplete="loadDisabledDates();" update="hotelCalendar"/>
</p:calendar>
ロジック: ユーザーが日付をクリックすると、バックエンドはこの日付を処理し、無効に設定する必要があります。そのカレンダーがバックエンドから (ajax リクエストを使用して) 無効な日付の更新された配列を受け取った後、すべての日付を (beforeShowDay を使用して) リロードし、異なる色でマークします。利用可能 - 緑、無効 - 赤。
問題: カレンダーはイベントのupdate
直後に実行されます。dateSelect
そのため、次のクリックまで現在の変更が表示されません。
質問:
loadDisabledDates()
jsの完了後に更新を強制的に実行するにはどうすればよいですか?- そのような機能を実現する他の方法はありますか? おそらくCalendarコンポーネントをBeanにバインドしていますか?