gpt4 book ai didi

java - 在 Tapestry Web 应用程序中处理域异常的最佳方法是什么?

转载 作者:行者123 更新时间:2023-12-02 06:38:36 25 4
gpt4 key购买 nike

在使用 Tapestry 创建 Web GUI 作为表示层时,我在如何处理和处理域对象引发的已检查异常方面遇到了一些困境。

假设我有一个域对象 Foo,它在其方法之一上抛出 FooException:

public class Foo {
...
public void fooMethod throws FooException() {
...
}
...
}

现在,假设我有一个名为 Bar 的 Tapestry 页面,其中的 Foo 对象正在使用 BeanEditor 进行编辑。

现在,为了确保非法值不会传递给 BeanEditor 来创建 Foo 对象,我可以想到两种基本方法:

  1. 使用 @Validate 注释进行 Tapestry 字段验证

    在这种情况下,如果我们可以通过正则表达式或通过限制值或执行 @Validate 提供的类似操作来过滤和检查输入,我们将在我们的字段旁边收到一条漂亮的错误消息重新编辑,提交将失败,从而使用户思考他在那里写的内容以及如何修复它。

  2. 捕获域异常并据此执行操作

    我认为这种情况提供了更多关于什么可以做、什么不能做的选择。例如,如果用户需要输入 URL 并且在输入时出错,则 URL 构造函数将抛出自己的 MalformedURLException。我们可以在 Java 代码中捕获该异常,但我的问题是,下一步该做什么以及如何做?

Tapestry 是否提供任何处理域异常(选中和/或未选中)的特殊机制,除了当事物崩溃时弹出的异常窗口?

有没有关于如何解决这个特定问题的模式?

常见异常和普通异常(例如 IndexOutOfBoundsException)和某些特定于域的异常(例如 FooException)之间的界限在哪里?

:D

最佳答案

最好的方法是将验证应用于字段。一种方法是使用@Validate。另一种是通过添加 Tapestry-beanvalidator 来使用 Bean Validation (JSR 303) 注释,解释如下:http://tapestry.apache.org/bean-validation.html .

此外,在 Tapestry 中,所有表单字段组件在将值应用于属性之前都会触发“验证”事件。

http://tapestry.apache.org/forms-and-validation.html解释了这一切。例如,假设您有一个 t:id 为“count”的表单字段,您可以通过声明事件处理程序方法来验证它:

void onValidateFromCount(Integer value) throws ValidationException {
if (value == 13) throw new ValidationException("Thirteen is an unlucky number.");
}

关于java - 在 Tapestry Web 应用程序中处理域异常的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19384822/

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