我在使用 JSF 和漂亮面孔重定向时遇到问题。我对这些东西很陌生,需要一些帮助,因为我无法像我想要的那样重定向到工作。
基本上我的漂亮配置中有这个:
<url-mapping id="newProject">
<pattern value="/newProject/" />
<view-id value="/faces/project/newProject.xhtml" />
<action>#{projectController.initNewProject}</action>
</url-mapping>
<url-mapping id="project">
<pattern value="/project/" />
<view-id value="/faces/project/projectIdx.xhtml" />
</url-mapping>
函数 initNewProject 如下所示:
public String initNewProject() throws IOException {
project = this.createProject(123415, "1234578943148", "KB25");
System.out.println(project);
return "pretty:project";
}
其中 project 是 ProjectController 中的一个字段:
@Named
@ConversationScoped
public class ProjectController implements Serializable {
private transient Project project;
...
重定向按我的意愿工作,因为 URL 从 ../newProject/ 更改为 ../project/ 并显示 /faces/project/newProject.xhtml 的内容。但是在重定向过程中,有时会调用 ProjektController 的构造函数并使字段项目为空。
如果我改变
return "pretty:project";
至
return "/project/projectIdx.xhtml";
一切正常。项目内容显示在网页上。但是 URL 不会改变。它保持 ../newProject/ 并且如果用户按 F5,他会创建一个不好的新项目。
由于其他一些原因,我无法将项目存储在会话中,所以这对我来说是没有选择的。
我不希望重定向重新创建控制器,因为我希望 newProject.xhtml 显示在 initNewProject 期间创建的项目内容
如何做到这一点?
非常感谢!
迈克尔