假设我有一个按钮:
<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>
我不明白如何在 Java 中的 TaskAssigner.assignTo() 中做到这一点。我需要访问 Seam 组件,对吧?我需要重定向到/task.xhtml 并根据需要设置参数 taskId,并运行 workOnTask.start() 对组件进行一些初始化。
最佳答案
首先,不建议将 s:link
标签与 action
属性一起使用(请参阅 JBoss Forum )。
对于导航问题,我将用 if-outcome
标签替换(或组合)from-action
标签,并返回 if-outcome 后面的值
在 assignTo
和 workOnTask.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";
}
关于java - 使用 Seam 中的方法进行重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18490824/