[英]the best “place” to invoke business logic in a Tapestry page?
[Tapestry版本:5.4-rc-1]
在挂毯页面中放置/调用业务逻辑的最佳“位置”是什么? 我可以看到很多使用onValidate()
方法的示例(在验证结束时表单触发的validate事件)。 目前,我这样做:
onValidate()
方法内部:我验证收到的数据并使用“表单上下文”执行/调用不同的业务逻辑 onSuccess()
或onFailure()
:我只是考虑渲染区域/加载一些javascript函数/准备消息以可视化 我不太喜欢将业务逻辑与验证“混合”,我想知道是否有人会建议一种不同/更好的方法-我看到的唯一选择是将所有内容移到onSuccess()
并在那里处理最终的异常。
我认为确定您所指的“业务逻辑”是有意义的。 您是否正在使用服务来验证某些内容,显而易见的地方是onValidate()
。 我们使用的验证业务逻辑的一个示例是通过执行DNS MX记录检查来确保电子邮件的域确实存在。 或检查用户名是否已经存在。
我们总是将任何CRUD服务调用放在onSuccess()
方法中,然后准备结果视图并返回它。
我们只使用onFailure()
来准备视图,以防onValidate()
(在窗体级别或单个字段级别)抛出某种ValidationException 。 在我们的例子中, onFailure()
永远不会调用任何业务逻辑。
如果确实有多个提交按钮,请使用一个本地变量存储调用了哪个按钮,以便您随后的onValidate()
, onSuccess()
和onFailure()
知道对它们的要求是我们同样使用的技巧。
在您的问题中,我们经常使用一种缺少的方法onPrepare(Context formContext)
来使用传入的上下文来设置表单处理。 这对于确保您不会在HttpSession
和/或在循环中使用表单时不粘贴变量非常有用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.