Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.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
Jsp Spring安全标签在错误页面中不起作用_Jsp_Spring Security - Fatal编程技术网

Jsp Spring安全标签在错误页面中不起作用

Jsp Spring安全标签在错误页面中不起作用,jsp,spring-security,Jsp,Spring Security,对于我希望处理的每个错误代码,我都有自定义的错误页面,尽管我发现在使用这些页面时,spring安全性标记不起作用。例如,以下仅显示“一个”: 在我的控制器中,我抛出一个名为ResourceNotFoundException的RuntimeException,用@ResponseStatus(value=HttpStatus.NOT_FOUND)注释未找到实体的位置。这将正确重定向到错误页面 不起作用的正是上面所解释的,spring安全标签中的任何内容都不会呈现,无论是导致true还是false,

对于我希望处理的每个错误代码,我都有自定义的错误页面,尽管我发现在使用这些页面时,spring安全性标记不起作用。例如,以下仅显示“一个”:

在我的控制器中,我抛出一个名为
ResourceNotFoundException
RuntimeException
,用
@ResponseStatus(value=HttpStatus.NOT_FOUND)
注释未找到实体的位置。这将正确重定向到错误页面

不起作用的正是上面所解释的,spring安全标签中的任何内容都不会呈现,无论是导致
true
还是
false
,正如我的示例所示,这两个标签都不会产生输出。

标签只会“起作用”(您可能应该澄清“不起作用”的含义)如果页面是针对通过Spring安全过滤器链的请求呈现的


您在
web.xml
中声明的错误页面将由容器直接处理,据我所知,无法告诉它对其应用筛选器映射。

有一个解决方案-请参阅答案-在web.xml中向筛选器映射添加这些附加信息就足够了:

<filter-mapping>
    ...
    <dispatcher>REQUEST</dispatcher>
    <dispatcher>ERROR</dispatcher>
</filter-mapping>

...
要求
错误

对吗?它不是已经通过链条到达控制器了吗?控制器将抛出
ResourceNotFoundException
。我想另一种方法是设置一个spring控制器,使错误页映射到静态路径。我不确定您指的是哪个控制器。您能否在问题中澄清您所谈论的错误页面的类型(您是指在
web.xml
或其他内容中使用
error page
定义的错误页面)以及实际不起作用的错误页面?老实说,我不确定servlet规范是否能保证如何处理
error page
页面。它甚至可能是特定于容器的。无论如何,它们通常都很简单。您可能希望通过从一个堆栈转储堆栈来检查它包含什么。我已根据请求进行了更新,我的示例中说明了我所说的“不工作”的意思,输入的两个标记提供了尝试输出已验证和未验证块的示例,这两个标记都不产生输出。
<error-page>
  <error-code>404</error-code>
  <location>/WEB-INF/error/404-layout.jsp</location>
</error-page>
<filter-mapping>
    ...
    <dispatcher>REQUEST</dispatcher>
    <dispatcher>ERROR</dispatcher>
</filter-mapping>