Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsf 2 Login.xhtml和JSF呈现_Jsf 2 - Fatal编程技术网

Jsf 2 Login.xhtml和JSF呈现

Jsf 2 Login.xhtml和JSF呈现,jsf-2,Jsf 2,从web.xml中的登录配置组件调用的login.xhtml页面有问题: <login-config> <auth-method>FORM</auth-method> <realm-name>file</realm-name> <form-login-config> <form-login-page>/faces/Login/login.xhtml</form-log

从web.xml中的登录配置组件调用的login.xhtml页面有问题:

<login-config>
    <auth-method>FORM</auth-method>
    <realm-name>file</realm-name>
    <form-login-config>
        <form-login-page>/faces/Login/login.xhtml</form-login-page>
        <form-error-page>/faces/Login/error.xhtml</form-error-page>
    </form-login-config>
</login-config>

形式
文件
/faces/Login/Login.xhtml
/faces/Login/error.xhtml
login.xhtml使用loginTemplate.xhtml中定义的模板:

<ui:composition template="./loginTemplate.xhtml">

LoginTemplate包含:

<p:layout fullPage="true">  
        <p:layoutUnit position="west" resizable="false" size="245">
            <ui:insert name="left" >
                Login
            </ui:insert>
        </p:layoutUnit>  

        <p:layoutUnit position="center" resizable="false"> 
            <ui:insert name="content">
                Abstract
            </ui:insert>
        </p:layoutUnit>  
</p:layout>

登录
摘要
login.xhtml页面包含一个表单,在“左”部分有一个and字段

页面以意外方式呈现,inputText和password字段不接受任何值

我做错了什么


而言,浏览器对CSS/JS/image资源的请求很可能也包含在安全约束中,因此浏览器检索的是登录页面,而不是具体的CSS/JS/image资源,从而导致在没有任何CSS/JS/image应用的情况下呈现。如果您密切关注HTTP流量监视器(在Chrome/Firefox>=23/IE>=9中按F12并选中“网络(工作)”选项卡),那么您应该通过判断这些资源上的HTTP响应来注意到它

在您的特殊情况下,当使用容器管理的安全性时,这很可能是由安全约束上的过度通用的URL模式引起的,如
/*
。如果不能选择将安全页面移动到像
/app
这样的通用文件夹中,这样就可以在
/app/*
URL模式上设置安全约束,那么应该添加另一个安全约束,使JSF资源显式公开。您可以通过在预定义的URL模式
/javax.faces.resource/*
上创建一个安全约束以及完全没有
标记来实现这一点:

<security-constraint>
    <web-resource-collection>
        <web-resource-name>Allowed resources</web-resource-name>
        <url-pattern>/javax.faces.resource/*</url-pattern>
    </web-resource-collection>
    <!-- No auth-constraint tag! -->
</security-constraint>

允许的资源
/javax.faces.resource/*

谢谢你的回答,这确实很有意义!我添加了你建议的安全约束,但仍然不起作用,对不起!然后,请在浏览器的HTTP流量监视器中查找线索。例如,请求的CSS文件是否也包含实际的CSS内容,还是仍然包含登录页面?你清理/重建/重新部署/重新启动webapp和服务器了吗?好的,我想我必须更好地理解约束概念,才能真正理解这里发生了什么!对不起,我缺少关于这一切的基本JSF知识!谢谢你的帮助!