使用jsf的动态页面网址

时间:2016-09-16 09:01:41

标签: jsf

我需要一个包含动态网址的网页。我们假设用户个人资料页面。

示例:

  • 用户个人资料(salah)的URL socail.com/salah和页面必须出现salah数据
  • 用户个人资料(wael)的URL socail.com/wael和页面必须出现wael数据

如何使用JSF框架执行此操作。

2 个答案:

答案 0 :(得分:1)

您需要有一个适合您需要的映射的servlet,如下所示:

@WebServlet("/")

然后当有人输入yourpage.com/<anything here>之类的网址时,此servlet将处理该请求。要从该网址获取用户名,您需要执行以下操作:

String username = request.getRequestURI().substring(1) - 这将收到没有主机名的请求信息,并从中删除/

设置参数(您的信息),以便在JSF中检索它:

request.setAttribute("userInfo", getSomeInfoByUsername(username));

然后您可以将请求转发到您的JSF视图文件,如下所示:

request.getRequestDispatcher("faces/index.xhtml").forward(request,response);

然后在JSF文件中,您可以执行以下操作以从请求中获取信息:

<h:outputText value="#{requestScope.userInfo}"/>

如果我没有错过任何你想要的东西,那么从URL获取用户名可能会以更好的方式被检索出来,但现在我没有想到任何事情。

More about servlets here

答案 1 :(得分:0)

如果我理解正确,您希望根据请求/会话属性动态重定向控件:

您可以获得ExternalContext的帮助。例如:

ExternalContext ec = FacesContext.getCurrentInstance().getExternalContext();
ec.redirect(context.getRequestContextPath() + "userProfile.jsf?user=" + user);

user是通过辅助bean传递的属性。

话虽如此,我认为您已经使用过JSF。

相关问题