【问题标题】:JSF web application -- opening a particular page based on url parametersJSF Web 应用程序——根据 url 参数打开特定页面
【发布时间】:2015-02-24 17:56:25
【问题描述】:

我们的项目使用使用 JSF、primefaces、xhtml 开发的 Web 应用程序。目前,用户可以通过点击“操作”链接按顺序登录和浏览页面,例如:-

index.xhtml --> login.xhtml --> classes.xhtml --> students.xhtml --> student_info.xhtml

即首次登录 --> 显示班级列表 --> 用户选择一个班级 --> 显示该班级的学生列表 --> 用户选择一个学生 --> 显示学生信息。 每个页面都有自己的“backing bean”类。它们在用户单击页面时被实例化。 此外,用户可以通过每个页面上的某些链接进行导航——例如,从“student_info”页面,他/她可以返回“students”页面。

现在的要求是:用户可以直接进入内页,例如,student_info 页面通过输入带有附加参数的“url”?user=alice,@987654326 @、?class=5?studentRollNo=15

此外,用户应该仍然能够导航回其他页面(即一旦页面打开,无论用户正常导航到 student_info 页面还是直接提供带参数的 url,它们的行为应该没有区别)。

我的问题是:-

  • 如何在JSF中读取url参数?
  • 应由哪个页面(或支持 bean)处理参数?应该集中完成,还是在每个页面(支持 bean)中完成?
  • 如果每个页面只处理其相关参数 - 有没有办法将剩余参数重定向到下一页?
  • 在此类实施中使用了哪些最佳做法?

注意:

  • 实际的 Web 应用程序要复杂得多,试图提供一个更简单的图片来指出我的问题。
  • JSF、Web App 等新手。不知道是否有一些 JSF 术语来描述上述问题。

【问题讨论】:

标签: jsf web-applications navigation


【解决方案1】:

你可以通过url请求传递它,每个BackingBean都会处理它
前任: mypage.xhtml?myparam=test

并在您的 BackingBean 中注入 HttpServletRequest(如果您使用 CDI)

@Inject
HttpServletRequest request;

获取参数

@PostConstruct
public void init() {
    String myparam = request.getParameter("myParam");     
}

用于重定向到您可以使用的其他页面

public String redirect() {
    return "otherPage.xhtml?faces-redirect=true&otherParam=test";
}

【讨论】:

  • 请改进答案的格式,在代码中使用“//”作为 cmets。但是,最好不要将它们包含在代码中,因为它们不会显示为 cmets
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多