如何使用JavaServer Faces基于目标URL修改登录页面?

时间:2012-08-15 07:26:11

标签: jsf authentication java-ee jsf-2

在我的JSF 2中,我使用基于表单的身份验证。 web.xml包含一个login.html条目。

<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>

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

我想在login.html中根据目标网址使用不同的布局。

  • 如果目标网址为/app/mobile/index.html,请使用针对较小浏览器尺寸优化的登录页面

  • 否则使用默认登录页面

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

是否可以使用JSF在登录页面中获取“目标”页面,可能使用FacesContext中的信息?

1 个答案:

答案 0 :(得分:0)

我找到了一种在https://stackoverflow.com/a/5820573/80901

获取目标请求URI的方法

表达式

#{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>