我有一个rich:dataTable,它包含一个rich: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);
}
}
当用户使用新的cronExpression编辑inplaceInput时,应使用新的触发时间更新“Next Fire”列。这发生在数据库中,但除非我物理刷新页面,否则UI不会更新。我之前遇到过这个问题,我最好的解决方案是使用JavaScript为我刷新页面 - 但这不是必需的。那么如何在不实际刷新浏览器页面的情况下更新数据呢? Seam 2.2 Richfaces 3.3.1,JSF 1.2,JBoss 5.1
答案 0 :(得分:0)
quartzJb
您想要reRender的表的ID吗?如果没有,只需将您想要reRender的表的ID添加到支持标记:
<a:support event="onviewactivated" reRender="quartzJb,jobTableId" ...