从视觉上调用错误组件java

问题描述:

我有一个视觉上的java类(包含在组件内的java类),它调用api并检查null中的响应。如果它为空,我必须调用错误组件。当我将响应状态设置为404时,它不起作用,因为在执行该行之前,它将响应设置为200.在这种情况下如何调用错误组件。 注意:我尝试将URL重定向到error.html,但那不是正确的解决方案。从视觉上调用错误组件java

通常不好的做法是重定向或更改组件/视图的响应状态,因为响应可能已经有一些已提交的内容。

您可能希望你的应用程序重新设计要么:

  1. 拨打的请求处理开始远程API,如果远程API返回null,返回404什么都致力于之前响应。
  2. 处理从远程API由任一空响应:
    • 渲染适当的响应,在该情况下,空响应预期/在某些情况下允许的。
    • 抛出一个异常,这将导致状态500,以防万一没有预期的空响应。
+0

谢谢。但是当你说“在请求处理开始时调用远程API”时我感到困惑。流程是这样的 1.错误的页面被称为不存在 2.它转到其父页面的组件 3.页面组件有一个视觉上的java类调用api来验证页面是否存在(如这些页面是动态页面) 4.如果存在,显示它,如果没有重定向到404错误页面 由于resp已经被提交,我不能在步骤4设置响应状态。我不能在第3步中做到这一点,因为我可以通过调用API来了解它的存在。 那么你建议哪一步? –

+0

@SkepticScribbler也许在你的情况下,它可能有一个特殊的servlet或过滤器来处理/拦截请求并检查动态API /内容。其他的想法是定义你的自定义页面助手/使用对象,在渲染任何东西之前调用它,并且可以处理重定向。 – Vlad

+0

如果你能指点我的文章/网址,它将会非常有帮助。由于我是新手,我已经理解你在说什么,但不知道如何实现它。第二个想法适合于手中的情况,但是当我在做getResponse()。sendRedirect时,它运行良好,但它改变了不应该发生的URL。无论如何,我很感激你的时间和回应! –