rich:inplaceInput编辑文本,刷新组件

时间:2012-02-16 21:24:19

标签: jsf richfaces seam

我有一个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

1 个答案:

答案 0 :(得分:0)

quartzJb您想要reRender的表的ID吗?如果没有,只需将您想要reRender的表的ID添加到支持标记:

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