Java WebSpherePortalPortlet没有';t在发生异常后失败,并在重新加载时重新刷新所有事件

Java WebSpherePortalPortlet没有';t在发生异常后失败,并在重新加载时重新刷新所有事件,java,jsf,websphere-portal,Java,Jsf,Websphere Portal,我正在开发一个应用程序,通常情况下,发生运行时异常(如null指针异常)的Portlet将被替换(在页面呈现/重新加载时)为一个小框,并显示消息“Portlet暂时禁用”。但不知何故,我的应用程序不会在出现未捕获错误时失败,而是将页面呈现为好像没有任何错误(同时将大量堆栈跟踪吐入控制台)。你可能想知道为什么这不好 我在按钮操作方法中犯了一个错误,当某个输入字段为空时,该错误导致NullPointerException。在此操作方法中,进一步将一些信息插入数据库中。web表单无声地失败了,这就是为

我正在开发一个应用程序,通常情况下,发生运行时异常(如null指针异常)的Portlet将被替换(在页面呈现/重新加载时)为一个小框,并显示消息“Portlet暂时禁用”。但不知何故,我的应用程序不会在出现未捕获错误时失败,而是将页面呈现为好像没有任何错误(同时将大量堆栈跟踪吐入控制台)。你可能想知道为什么这不好

我在按钮操作方法中犯了一个错误,当某个输入字段为空时,该错误导致
NullPointerException
。在此操作方法中,进一步将一些信息插入数据库中。web表单无声地失败了,这就是为什么我又按下了几次按钮。然后我在输入框中输入数据,再按一次按钮。现在,操作处理程序方法不再抛出
NullPointerException

然而,实际情况是,handler方法运行了6次(每次提交失败一次+1)。 显然,导致NullPointerException的
ActionEvent
s没有从操作队列中删除,而是在后续请求中重新刷新。如果应用程序确实像预期的那样被禁用,这就不是问题

有人能帮我吗?我需要让Portlet在未捕获异常时再次失败,或者在每个渲染响应阶段之后清除faces事件队列

  • 将断点放在NPE实际发生的位置
  • 在调试模式下启动服务器
  • 当服务器在断点上停止时,查看堆栈并查看调用链。有些东西可能正在“吞咽”你的NPE
  • 当您针对定制设计的Portlet开发框架进行开发时,通常会发生这种情况。该框架中的设计缺陷可能会导致操作异常处理不当。我以前见过这样的定制框架

  • 将断点放在NPE实际发生的位置
  • 在调试模式下启动服务器
  • 当服务器在断点上停止时,查看堆栈并查看调用链。有些东西可能正在“吞咽”你的NPE
  • 当您针对定制设计的Portlet开发框架进行开发时,通常会发生这种情况。该框架中的设计缺陷可能会导致操作异常处理不当。我以前见过这样的定制框架