我应该使用哪种设计模式来自定义JSP标记来报告错误

时间:2014-10-13 15:56:37

标签: java jsp taglib

我在标记库(Java,而不是JSP片段)中编写了一些自定义标记。

其中一些依靠后端服务来返回数据。

鉴于标签将被其他开发人员使用,我想尽可能地帮助他们,例如,如果他们配置错误,或者是否存在其他问题,但我不一定希望Exceptions一路涓涓细流,给出500错误。

请注意。这不是MVC。这是针对Model-1风格的页面驱动应用程序。

在架构上,标签报告错误的最佳,推荐或建立的设计模式是什么?

1 个答案:

答案 0 :(得分:1)

你所要求的(几乎)是不可能的,并打破了MVC原则。根据MVC原则,这就是您的工作:

  • 控制器从后端服务获取数据并将其存储在请求属性中
  • 如果出现问题,控制器可以显示自定义错误页面,或者可能抛出异常,导致错误500被发送到浏览器
  • 如果没有问题,控制器将调度到只需要从请求中存储的数据生成HTML的视图。这里没有错误的风险(除了错误)。

如果JSP标记从不可靠的后端服务获取数据,那么它将在呈现视图时执行此操作并将HTML附加到浏览器。此时已发送HTTP响应状态(200),JSP标记抛出的异常只会使页面呈现失败。显示漂亮的错误页面或发送500错误为时已晚。

围绕它的唯一方法是在整个事物中包含一个过滤器,在内存中缓冲响应,最后发送HTML成功呈现。不过,我真的不会这样做。相反,我会坚持使用MVC:让控制器为视图准备数据,并定义将数据作为属性而不是从后端获取数据的标记。

如果后端是可靠的,但你只关心标签的错误使用(即错误),抛出一个带有明确错误消息的异常并记录它,开发人员应该能够找出问题所在是