我们的项目使用了一个使用JSF、primefaces、xhtml开发的Web应用程序。当前用户可以通过点击"操作"链接登录并按顺序浏览页面,如:-
index.xhtml --> login.xhtml --> classes.xhtml --> students.xhtml --> student_info.xhtml
即首次登录-->显示班级列表-->用户选择一个班级-->显示该班级的学生列表-->用户选定一个学生-->显示学生信息。每个页面都有自己的"backingbean"类。当用户点击页面时,它们会被实例化。此外,用户可以通过每个页面上的某些链接导航回来——比如说,从"student_info"页面,他/她可以回到"students"页面。
现在的要求是:用户可以直接进入内部页面,例如student_info页面,方法是键入带有附加参数的"url"、?user=alice
、?passwd=xyz
、?class=5
、?studentRollNo=15
。
此外,用户应该仍然能够导航回其他页面(即,一旦打开页面,无论用户是正常导航到student_info页面,还是直接向url提供参数,他们的行为都应该没有差异)。
我的问题是:-
- 如何在JSF中读取url参数
- 哪个页面(或backingbean)应该处理这些参数?它应该集中完成,还是在每个页面(backingbean)中完成
- 如果每个页面只处理其相关的参数,有没有办法将剩余的参数重定向到下一页
- 在这种实现中使用的最佳实践是什么
注:
- 实际的web应用程序要复杂得多,试图提供一个更简单的图片来解决我的问题
- JSF、Web应用程序等的新手。不知道是否有一些JSF术语来描述上述问题
您可以通过url请求传递它,每个BackingBean都会处理它
例如:mypage.xhtml?myparam=测试
并在BackingBean中注入HttpServlet请求(如果您使用CDI)
@Inject
HttpServletRequest request;
并获取参数
@PostConstruct
public void init() {
String myparam = request.getParameter("myParam");
}
要重定向到其他页面,可以使用
public String redirect() {
return "otherPage.xhtml?faces-redirect=true&otherParam=test";
}