2012-08-15 60 views
1

在我的JSF 2我使用基于表单的身份验证。 web.xml包含一个login.html条目。如何根据JavaServer Faces的目标URL修改登录页面?

<login-config> 
    <auth-method>FORM</auth-method> 
    <realm-name>testDB</realm-name> 
    <form-login-config> 
     <form-login-page>/login.html</form-login-page> 
     <form-error-page>/loginError.html</form-error-page> 
    </form-login-config> 
</login-config> 

的Web应用程序有一个主网页(/app/index.html)和/app/mobile/index.html支持手机。

我想使用的login.html不同的布局,根据目标URL。

  • 如果目标URL是/app/mobile/index.html,使用的是小型浏览器优化的登录页面大小

  • 否则使用默认的登录页面

登录页面(login.html)是JSF页面。

是否可以使用JSF在登录页面中获取'目标'页面,也许使用FacesContext中的信息?

回答

0

我发现一种方式来获得所述目的地请求URI在https://stackoverflow.com/a/5820573/80901

表达

#{requestScope['javax.servlet.forward.request_uri']} 

包含值/app/index.html或/app/mobile/index.html

代码示例:

<h:panelGroup rendered="#{requestScope['javax.servlet.forward.request_uri'] eq '/app/mobile/index.html'}"> 
     <h2> 
      Welcome to the MOBILE login page. 
     </h2> 
    </h:panelGroup> 
    <h:panelGroup rendered="#{requestScope['javax.servlet.forward.request_uri'] ne '/app/mobile/index.html'}"> 
     <h2> 
      Welcome to the NON-MOBILE login page. 
     </h2> 
    </h:panelGroup>