Jsf 2 当URL未由PrettyFaces映射时,身份验证(Spring安全性)对象为空 我在应用程序中使用JSF(Primefaces)、Spring、Spring Security、MyBatis和PrettyFaces 我有一个URL不是由PrettyFaces映射的 此url重定向到XHTML页面。XHTML页面与Spring安全性映射,并与我的应用程序的角色关联 在XHTML页面中,我调用了一个对象。此对象存储用户已登录 在我的申请中 当我输入url时,会发生异常,因为对象为null 但当我映射url时,对象返回存储在用户中的值

Jsf 2 当URL未由PrettyFaces映射时,身份验证(Spring安全性)对象为空 我在应用程序中使用JSF(Primefaces)、Spring、Spring Security、MyBatis和PrettyFaces 我有一个URL不是由PrettyFaces映射的 此url重定向到XHTML页面。XHTML页面与Spring安全性映射,并与我的应用程序的角色关联 在XHTML页面中,我调用了一个对象。此对象存储用户已登录 在我的申请中 当我输入url时,会发生异常,因为对象为null 但当我映射url时,对象返回存储在用户中的值,jsf-2,spring-security,prettyfaces,Jsf 2,Spring Security,Prettyfaces,发生了什么事 这是我的webapp日志: 40094 [http-8080-6] TRACE com.ocpsoft.pretty.PrettyContext - Initialized PrettyContext 40094 [http-8080-6] TRACE com.ocpsoft.pretty.PrettyContext - Initialized PrettyContext 40094 [http-8080-6] TRACE com.ocpsoft.pretty.Pretty

发生了什么事

这是我的webapp日志:

40094 [http-8080-6] TRACE com.ocpsoft.pretty.PrettyContext  - Initialized PrettyContext
 40094 [http-8080-6] TRACE com.ocpsoft.pretty.PrettyContext  - Initialized PrettyContext
 40094 [http-8080-6] TRACE com.ocpsoft.pretty.PrettyFilter  - Request is not mapped using PrettyFaces. Continue.
 40094 [http-8080-6] TRACE com.ocpsoft.pretty.PrettyContext  - Initialized PrettyContext
 40094 [http-8080-6] TRACE com.ocpsoft.pretty.PrettyContext  - PrettyContext not found in Request - building new instance
 40094 [http-8080-6] DEBUG org.springframework.faces.support.RequestLoggingPhaseListener  - Entering JSF Phase: RESTORE_VIEW 1
 40141 [http-8080-6] TRACE com.ocpsoft.pretty.PrettyContext  - Retrieved PrettyContext from Request
 40141 [http-8080-6] TRACE com.ocpsoft.pretty.faces.beans.ParameterInjector  - Validating parameters.
 40141 [http-8080-6] TRACE com.ocpsoft.pretty.PrettyContext  - Retrieved PrettyContext from Request
 40141 [http-8080-6] TRACE com.ocpsoft.pretty.faces.beans.ParameterInjector  - Injecting parameters
 40141 [http-8080-6] TRACE com.ocpsoft.pretty.PrettyContext  - Retrieved PrettyContext from Request
 40141 [http-8080-6] TRACE com.ocpsoft.pretty.PrettyContext  - Retrieved PrettyContext from Request
 40141 [http-8080-6] INFO  com.indra.siguip.view.exceptions.SiguipExceptionHandler  - Entrando al manejador de Excepciones del JSF
 40141 [http-8080-6] TRACE com.ocpsoft.pretty.PrettyContext  - Retrieved PrettyContext from Request
 40141 [http-8080-6] DEBUG org.springframework.faces.support.RequestLoggingPhaseListener  - Entering JSF Phase: APPLY_REQUEST_VALUES 2
 40141 [http-8080-6] INFO  com.indra.siguip.view.exceptions.SiguipExceptionHandler  - Entrando al manejador de Excepciones del JSF
 40141 [http-8080-6] TRACE com.ocpsoft.pretty.PrettyContext  - Retrieved PrettyContext from Request
 40141 [http-8080-6] DEBUG org.springframework.faces.support.RequestLoggingPhaseListener  - Entering JSF Phase: PROCESS_VALIDATIONS 3
 40141 [http-8080-6] TRACE org.springframework.web.jsf.el.SpringBeanFacesELResolver  - Successfully resolved variable 'applicationConfig' in Spring BeanFactory
 40141 [http-8080-6] TRACE org.springframework.web.jsf.el.SpringBeanFacesELResolver  - Successfully resolved variable 'menuGeneratorService' in Spring BeanFactory
 28/05/2013 07:54:00 PM com.sun.faces.lifecycle.ProcessValidationsPhase execute
ADVERTENCIA: Se ha producido un error al realizar la inyección de recurso en el bean administrado menuController
com.sun.faces.mgbean.ManagedBeanCreationException: Se ha producido un error al realizar la inyección de recurso en el bean administrado menuController
    at com.sun.faces.mgbean.BeanBuilder.invokePostConstruct(BeanBuilder.java:229)
这是我对springsecuriy和pretyface的配置

<filter>
    <filter-name>springSecurityFilterChain</filter-name>
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>springSecurityFilterChain</filter-name>
    <url-pattern>/*</url-pattern>
    <dispatcher>FORWARD</dispatcher>
  </filter-mapping>
  <filter>
    <filter-name>Pretty Filter</filter-name>
    <filter-class>com.ocpsoft.pretty.PrettyFilter</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>Pretty Filter</filter-name>
    <url-pattern>/*</url-pattern>
    <dispatcher>FORWARD</dispatcher>
    <dispatcher>REQUEST</dispatcher>
    <dispatcher>ERROR</dispatcher>
  </filter-mapping>

springSecurityFilterChain
org.springframework.web.filter.DelegatingFilterProxy
springSecurityFilterChain
/*
向前地
漂亮的过滤器
com.ocpsoft.pretty.PrettyFilter
漂亮的过滤器
/*
向前地
要求
错误

PD:我已经把主题改得更明确了

不,在使用PrettyFaces时,您肯定不需要映射每个URL。如果传入的请求与任何映射都不匹配,它将被简单地转发到应用程序,而PrettyFaces不会对其进行任何处理


因此,您的异常是由其他原因引起的。如果您发布完整的stacktrace,并显示一条未本地化的错误消息,我可以查看一下

您只将spring安全过滤器配置为处理转发请求,它还需要处理其他类型:

<filter>
  <filter-name>springSecurityFilterChain</filter-name>
  <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
  <filter-name>springSecurityFilterChain</filter-name>
  <url-pattern>/*</url-pattern>
  <dispatcher>FORWARD</dispatcher>
  <dispatcher>REQUEST</dispatcher>
  <dispatcher>INCLUDE</dispatcher>
  <dispatcher>ERROR</dispatcher>
</filter-mapping>

springSecurityFilterChain
org.springframework.web.filter.DelegatingFilterProxy
springSecurityFilterChain
/*
向前地
要求
包括
错误

如果框架未处理请求,则PrettyFaces不会转发该请求,因此,分派类型仍为request,并且Spring安全筛选器从不执行。

springSecurityFilterChain的配置使其仅应用于转发的请求(如PrettyFaces创建的请求)。您应该将所有请求都发送到过滤器,以便它也可以被正常请求调用。