有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java是在Tapestry页面中调用业务逻辑的最佳“位置”?

[Tapestry版本:5.4-rc-1]

在Tapestry页面中放置/调用业务逻辑的最佳“位置”是什么?我可以看到很多例子使用onValidate()方法(验证结束时表单触发的验证事件)。 此时此刻,我这样做:

  • 在表单提交事件处理程序内部:我只是将“表单上下文”(类似于:“addThis”、“removeThat”、“partialUpdate”、“save”)存储在一个变量中。这是因为我可以从不同的submit/linksubmit组件触发表单提交,这可能会执行不同的业务逻辑
  • onValidate()方法内部:我验证接收到的数据,并使用“表单上下文”执行/调用不同的业务逻辑
  • onSuccess()onFailure()内部:我只想呈现区域/加载一些javascript函数/准备消息以可视化

我不喜欢太多将业务逻辑与验证“混合”,我想知道是否有人会建议一种不同/更好的方法——我看到的唯一替代方法是将所有内容移到onSuccess()中,并在那里处理最终的异常


共 (1) 个答案

  1. # 1 楼答案

    我认为确定您所指的“业务逻辑”是有意义的。如果你使用你的服务来验证某件事,显而易见的地方是onValidate()。我们使用的验证业务逻辑的一个例子是,通过DNS MX记录检查来确保电子邮件的域实际存在。或者检查用户名是否已经存在

    我们总是在onSuccess()方法中放置任何CRUD服务调用,然后准备结果视图并返回它

    我们只使用onFailure()来准备视图,以防onValidate()(在表单级别或单个字段级别)抛出某种类型的ValidationException。在我们的例子中onFailure()从不调用任何业务逻辑

    如果您确实有多个提交按钮,那么使用一个局部变量来存储调用了哪个按钮,以便后续的onValidate()onSuccess()onFailure()知道对它们的请求是什么,这也是我们使用的技巧

    在你的问题中,有一种方法我们经常使用^{}来使用传入上下文设置表单处理。非常有助于确保在HttpSession和/或在循环中使用表单时不粘变量