2

2つの異なる日付の間にデータベースから詳細を取得するための検索条件があります。

ah:slectOneMenuにリスト{"from"、 "to"、"between"}が入力されています。「開始」と「終了」の日付については、日付を入力するためにrich:calendarを表示する必要があり、「between」については、入力の開始日と終了日を指定するために2つのrich:calendarを表示する必要があります。

私のコードはこんな感じです

<h:selectOneMenu id="startdate" 
       value="#{commoncontroller.coverDateType}">  
      <a4j:support event="onchange" ajaxSingle="true"     
                   action="#controller.dateSelectionChanged}" 
                   reRender="startdateone,startdatetwo"/>
          <f:selectItems value="#{controller.startDateMap}" />
    </h:selectOneMenu>

     <h:panelGrid id="startdateone" layout="block" rendered="#{controller.dateOneStatus}">
            <rich:calendar id="date1"                               value="#{controller.covStartDate}" showWeeksBar="false" />
     </h:panelGrid>

     <h:panelGrid id="startdatetwo" layout="block" rendered="#{controller.dateTwoStatus}">
            <rich:calendar id="date2"                               value="#{controller.covStartDate2}" showWeeksBar="false" />
     </h:panelGrid>

選択メニューから任意の値を選択すると、バックエンドでpanelGridレンダリング属性がtrueに設定されていても、カレンダーは初めてレンダリングされませんが、ページを更新すると、カレンダーがレンダリングされます。

どんな助けでも大歓迎です。

4

1 に答える 1

0

属性を使用してコンポーネントを直接再レンダリングすることに関して問題がありrenderedます。直接言うと、コードで何をしたかを直接意味します。2つのパネルグリッドを、そのIDを使用してa4j:outputPanelのような親コンポーネントでラップしてみてa4j:outputPanelくださいreRender

このような:

<h:selectOneMenu id="startdate" 
       value="#{commoncontroller.coverDateType}">  
      <a4j:support event="onchange" ajaxSingle="true"     
                   action="#controller.dateSelectionChanged}" 
                   reRender="box"/>
          <f:selectItems value="#{controller.startDateMap}" />
    </h:selectOneMenu>

<a4j:outputPanel id="box">
     <h:panelGrid id="startdateone" layout="block" rendered="#{controller.dateOneStatus}">
            <rich:calendar id="date1"                               value="#{controller.covStartDate}" showWeeksBar="false" />
     </h:panelGrid>

     <h:panelGrid id="startdatetwo" layout="block" rendered="#{controller.dateTwoStatus}">
            <rich:calendar id="date2"                               value="#{controller.covStartDate2}" showWeeksBar="false" />
     </h:panelGrid>

</a4j:outputPanel>

お役に立てれば。-乾杯

于 2012-07-10T09:37:28.500 に答える