gpt4 book ai didi

jsf - java.lang.IllegalArgumentException : null source

转载 作者:行者123 更新时间:2023-12-02 15:49:49 24 4
gpt4 key购买 nike

我们有一个使用 JSF2 和 Spring 的应用程序。该应用程序部署后工作正常。但如果我执行以下步骤,就会发生这种情况:

  1. 打开应用程序的登录页面。
  2. 在服务器上重新部署了应用程序。
  3. 尝试使用之前打开的登录页面登录,但显示以下异常:

    javax.servlet.ServletException: null source
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:321)
    at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237)
    at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167)

    root cause

    java.lang.IllegalArgumentException: null source
    at java.util.EventObject.<init>(EventObject.java:38)
    at javax.faces.event.SystemEvent.<init>(SystemEvent.java:67)
    at javax.faces.event.ComponentSystemEvent.<init>(ComponentSystemEvent.java:69)
    at javax.faces.event.PostRestoreStateEvent.<init>(PostRestoreStateEvent.java:69)
    at com.sun.faces.lifecycle.RestoreViewPhase.deliverPostRestoreStateEvent(RestoreViewPhase.java:256)
    at com.sun.faces.lifecycle.RestoreViewPhase.execute(RestoreViewPhase.java:245)
    at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:97)
    at com.sun.faces.lifecycle.RestoreViewPhase.doPhase(RestoreViewPhase.java:107)
    at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:114)
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:308)

如果我单击第一个登录页面,然后输入登录详细信息,应用程序不会中断。仅当我尝试将先前加载的登录页面与新部署的应用程序一起使用时,才会发生这种情况。

有人知道答案吗?

最佳答案

这个应该被作为 ViewExpiredException 抛出。 。这是一个在 Mojarra 2.0.3 中开始出现的错误,并在 Mojarra 2.1.0 中得到修复。另请参阅issue 1762 (请注意,Mojarra 2.1.0 doesn't 在 Tomcat/Jetty 上工作,那么至少使用 Mojarra 2.1.1)。

基本上,当 Mojarra 无法构建或恢复 View 时,它通常会抛出一个足够具体的异常,但由于此错误,代码中稍后会错误地预期有效 View ,从而导致 IllegalArgumentException: null source 。可能的真正原因是 View 包含一个简单的 XML 语法错误,例如缺少标签或损坏的属性值,Mojarra 通常会抛出 FaceletException 错误。带有非常详细的消息,包括行号和位置等。

防止ViewExpiredException ,在对其执行任何操作之前,您必须通过 GET 请求刷新页面。如果您使用的 Mojarra 版本没有出现此错误(例如 2.0.2 或更低版本,或者 2.1.0 或更高版本),那么您可以使用 <error-page> 优雅地处理它。在web.xml并提供一个自定义错误页面,其中通知最终用户 session 已过期,以及指向初始请求 URI 的链接。

关于jsf - java.lang.IllegalArgumentException : null source,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4792437/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com