【问题标题】:the best "place" to invoke business logic in a Tapestry page?在 Tapestry 页面中调用业务逻辑的最佳“位置”?
【发布时间】:2016-03-15 08:57:40
【问题描述】:

[Tapestry 版本:5.4-rc-1]

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

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

我不喜欢过多地将业务逻辑与验证“混合”,我想知道是否有人会提出不同/更好的方法 - 我看到的唯一选择是将所有内容移到 onSuccess() 中并处理最终的异常在那里。

【问题讨论】:

    标签: java validation web-applications tapestry business-logic


    【解决方案1】:

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

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

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

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

    在您的问题中,缺少一种我们经常使用的方法,即onPrepare(Context formContext) 使用传入的上下文设置表单处理。确保您不会在 HttpSession 中和/或在循环内使用表单时非常有用。

    【讨论】:

      猜你喜欢
      • 2021-06-21
      • 2021-01-11
      • 1970-01-01
      • 2011-10-16
      • 2011-12-08
      • 1970-01-01
      • 1970-01-01
      • 2016-01-18
      • 2011-04-26
      相关资源
      最近更新 更多