操作完成后如何重新呈现a4j:commandLink

时间:2013-06-06 16:22:22

标签: jsf richfaces jsf-1.2 seam2

我的代码非常简单:

<a4j:commandLink action="#{ticketAboxEventHelper.removeAboxTicket(ticketAbox)}"
                             onclick="if(!confirm('Are you sure ... ?')) return false;"
                             reRender="aboxlistpanel">
                        <h:graphicImage alt="Delete" url="../../img/dialog-error-5.png" title="Delete" />
                        <a4j:support event="oncomplete" 
                                     action="#{editTicketNewAction.testRerender()}" 
                                     reRender="aboxlistpanel"
                                     />
</a4j:commandLink>

点击链接时系统必须

  1. 询问用户是否已确认
  2. 执行操作
  3. 重新渲染aboxlistpanel
  4. 现在我的问题是在动作完成之前重新渲染是hapenning。任何想法如何以正确的方式完成?

2 个答案:

答案 0 :(得分:0)

您的操作方法对JSF 1.2无效,您不需要<a4j:support>。由于您要传递参数,因此应使用<f:attribute />actionListener

<a4j:commandLink actionListener="#{ticketAboxEventHelper.removeAboxTicket}" onclick="if(!confirm('Are you sure ... ?')) return false;" reRender="aboxlistpanel">
    <h:graphicImage alt="Delete" url="../../img/dialog-error-5.png" title="Delete" />
    <f:attribute name="ticket" value="#{ticketAbox}" />
</a4j:commandLink>

您的bean方法如下所示:

public void removeAboxTicket(ActionEvent event)
{
    TicketAbox ticket = (TicketAbox)event.getComponent().getAttributes().get("ticket");

    // Your business logic
}

更多信息:

答案 1 :(得分:0)

解决。我将令人讨厌的JSF代码包装在一起,一切都按预期开始工作。与回答<a4j:commandLink> Not Rerendering相关。我先解决了它,然后发现其他人以同样的方式解决了它。嗯...