0

假设我有一个按钮:

<h:commandButton value="Assign task" action="#{taskAssigner.assignTo(user)}"/>

它将新任务分配给用户。我希望能够立即重定向到任务页面,这相当于单击一个链接

<s:link value="#{task.description}" action="#{workOnTask.start}">
    <f:param name="taskId" value="#{task.id}" />
</s:link>

假设在 WEB-INF/pages.xml 我有类似的东西

<page view-id="/task-list.xhtml">
    <navigation from-action="#{workOnTask.start}">
        <redirect view-id="/task.xhtml"/>
    </navigation>
</page>

在TaskAssigner.assignTo() 中,我看不到如何在Java 中做到这一点。我需要访问 Seam 组件,对吗?我需要重定向到 /task.xhtml 并根据需要设置参数 taskId 并运行 workOnTask.start() 对组件进行一些初始化。

4

1 回答 1

1

首先,不建议将s:link-tag 与action-attribute 一起使用(参见JBoss 论坛)。

对于导航问题,我会将标签替换(或组合)from-action标签并在- 和 -方法处if-outcome返回后面的值。if-outcomeassignToworkOnTask.start

<page view-id="/task-list.xhtml">
  <navigation>
    <rule if-outcome="navToTask">
      <redirect view-id="/task.xhtml"/>
    </rule>
  </navigation>
</page>

在方法上:

public String assignTo(User u)
{
    [...]
    // in case of success
    return "navToTask";
}
于 2013-08-28T14:39:00.343 回答