1

我在这里有一个非常简单的代码:

<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

2 回答 2

0

您的操作方法对 JSF 1.2 无效,并且您不需要<a4j:support>. 由于要传递参数,因此应使用<f:attribute />and 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
}

更多信息 :

于 2013-06-06T16:45:36.803 回答
0

解决了。我将有问题的 JSF 代码包装在 a 中,一切都开始按预期工作。与答案<a4j:commandLink> Not Rerendering 相关。我先解决了它,然后发现其他人以同样的方式解决了它。嗯……

于 2013-06-07T10:15:07.517 回答