2012-02-16 17 views
0

私は金持ちを持っている:dataTableの豊富なが含まれていますinplaceInputコンポーネントといくつかの列豊富:inplaceInput編集テキスト、リフレッシュコンポーネント

<h:column> 
    <f:facet name="header">Next Fire</f:facet> 
    <h:outputText value="#{_quartzJobDetails.qrtzTriggerses.nextFireTime}" > 
    <s:convertDateTime type="both" dateStyle="short"/> 
    </h:outputText> 
</h:column> 

<h:column> 
     <f:facet name="header">Cron Expression</f:facet> 
     <rich:inplaceInput layout="block" value="#{_quartzJobDetails.qrtzTriggerses.qrtzCronTriggers.cronExpression}" 
       id="inplaceInput" 
       selectOnEdit="true" 
       editEvent="ondblclick"> 
       <a:support event="onviewactivated" reRender="quartzJb" bypassUpdates="false" 
         action="#{quartzAction.rescheduleJob(_quartzJobDetails.qrtzTriggerses)}"/> 
     </rich:inplaceInput> 
</h:column> 

アクションメソッド:

public void rescheduleJob(QrtzTriggers qrtztrigger){ 
     CronTrigger trigger; 
     try { 
      trigger = // boring trigger creation omitted 
      this.controller.getScheduler().rescheduleJob(); //boring reschedule omitted 
      this.entityManager.merge(qrtztrigger); //this didn't help any 
     } catch (ParseException e) { 
      log.error("cron expression incorrect " + e); 
     } catch (SchedulerException e) { 
      log.error("scheduler no likey " + e); 
     } 
} 

ユーザーが編集inlineInput新しいcronExpressionを使用して、「次の火災」列を新しい発射時間で更新する必要があります。これはデータベースで発生していますが、物理的にページを更新しない限りUIは更新されません。私はこれまでにこの問題を抱えていました。私の最善の解決策はJavaScriptを使ってページを更新することですが、それは必要ではありません。では、実際にブラウザのページを更新せずにデータを更新するにはどうすればよいですか?
Seam 2.2 Richfaces 3.3.1、JSF 1.2、JBoss 5.1

答えて

0

quartzJb再レンダリングするテーブルのIDは?そうでない場合は、サポートするタグに再レンダリングするテーブルのIDを追加してください。

<a:support event="onviewactivated" reRender="quartzJb,jobTableId" ... 
+0

Thanx mbockusですが、quartzJbはテーブルIDです。 – gebuh

+0

アクションメソッドでnextFireTimeが実際に更新されていますか?私は、データテーブルが再レンダリングされたときに呼び出されているかどうかを調べるためにgetNextFireTime()メソッドにブレークポイントを設定しようとします。それは正しい価値を返さない理由についての手がかりを与えるかもしれません。 –

関連する問題