java是在Tapestry页面中调用业务逻辑的最佳“位置”?
[Tapestry版本:5.4-rc-1]
在Tapestry页面中放置/调用业务逻辑的最佳“位置”是什么?我可以看到很多例子使用onValidate()
方法(验证结束时表单触发的验证事件)。
此时此刻,我这样做:
- 在表单提交事件处理程序内部:我只是将“表单上下文”(类似于:“addThis”、“removeThat”、“partialUpdate”、“save”)存储在一个变量中。这是因为我可以从不同的submit/linksubmit组件触发表单提交,这可能会执行不同的业务逻辑
- 在
onValidate()
方法内部:我验证接收到的数据,并使用“表单上下文”执行/调用不同的业务逻辑 - 在
onSuccess()
或onFailure()
内部:我只想呈现区域/加载一些javascript函数/准备消息以可视化
我不喜欢太多将业务逻辑与验证“混合”,我想知道是否有人会建议一种不同/更好的方法——我看到的唯一替代方法是将所有内容移到onSuccess()
中,并在那里处理最终的异常
# 1 楼答案
我认为确定您所指的“业务逻辑”是有意义的。如果你使用你的服务来验证某件事,显而易见的地方是
onValidate()
。我们使用的验证业务逻辑的一个例子是,通过DNS MX记录检查来确保电子邮件的域实际存在。或者检查用户名是否已经存在我们总是在
onSuccess()
方法中放置任何CRUD服务调用,然后准备结果视图并返回它我们只使用
onFailure()
来准备视图,以防onValidate()
(在表单级别或单个字段级别)抛出某种类型的ValidationException。在我们的例子中onFailure()
从不调用任何业务逻辑如果您确实有多个提交按钮,那么使用一个局部变量来存储调用了哪个按钮,以便后续的
onValidate()
、onSuccess()
和onFailure()
知道对它们的请求是什么,这也是我们使用的技巧在你的问题中,有一种方法我们经常使用^{} 来使用传入上下文设置表单处理。非常有助于确保在
HttpSession
和/或在循环中使用表单时不粘变量