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