2016-09-16 17 views
1

我需要一个包含动态URL的页面。我们假设用户资料页面。使用jsf动态页面url使用jsf

实施例:

  • 网址用户简档(塞拉赫)socail.com/salah和页面必须出现塞拉赫数据
  • 网址用户简档(瓦埃勒)socail.com/wael和必须页出现wa数据

我该如何使用JSF框架来做到这一点。

+0

我无法理解您的要求?您到目前为止所尝试的? –

+0

我需要我的网页与动态网址一样的Web服务,当你请求网址,如https:\\ www.site.com \欢迎假设它返回JSON响应 如“你进入欢迎”我需要做什么但在我的jsf应用程序如何使动态url –

+1

我认为你需要的是http://www.ocpsoft.org/prettyfaces/。比在自家种植的servlet(过滤器)中做事更方便和灵活 – Kukeltje

回答

0

如果我理解正确的话,你要动态地重定向请求的基础上,控制/会话属性:

你可以采取的ExternalContext帮助。例如:

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

user是通过backing bean传递的属性。

话虽如此,我假设你已经与JSF合作过。

+0

亲爱的downvoater,请提及原因! –

0

你需要有适当的映射您的需求,东西一个servlet是这样的:

@WebServlet("/")

后来,当有人进入URL像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

+0

感谢你的回答有帮助,在你的回答你写requestScope这是你的managedBean和它有userInfo字段,当你这样做request.setAttribute(“userInfo”,getSomeInfoByUsername(username));它初始化我的requestScope Bean,这是正确的? –

+0

不,requestScope是隐式对象,它已经构建在JSF中,请查看http://incepttechnologies.blogspot.com/p/jsf-implicit-objects.html – Shadov

+0

感谢您的有用答案 –