[Tapestry version:5.4-rc-1]
什么是最好的"地点"在Tapestry页面中放置/调用业务逻辑?我可以看到很多示例使用onValidate()
方法(验证结束时表单触发的validate事件)。
目前我这样做:
onValidate()
方法:我验证收到的数据并使用"表单上下文"执行/调用不同的业务逻辑onSuccess()
或onFailure()
:我只考虑渲染区域/加载一些javascript函数/准备消息以进行可视化我不太喜欢"混合"带有验证的业务逻辑,我想知道是否有人建议采用不同/更好的方法 - 我看到的唯一选择是将所有内容移到onSuccess()
内并在那里处理最终的异常。
答案 0 :(得分:0)
我认为确定您所指的“业务逻辑”是有意义的。您是否正在使用您的服务来验证某些内容,显而易见的地方是onValidate()
。我们使用的验证业务逻辑的一个示例是通过执行DNS MX记录检查来确保电子邮件的域实际存在。或者检查用户名是否已经存在。
我们始终在onSuccess()
方法中放置任何CRUD服务调用,然后准备生成的视图并将其返回。
我们仅使用onFailure()
准备视图,以防onValidate()
(在表单级别或单个字段级别)抛出某种ValidationException。在我们的例子中,onFailure()
从不调用任何业务逻辑。
如果您确实有多个提交按钮,请使用本地变量来存储调用哪个按钮,以便后续onValidate()
,onSuccess()
和onFailure()
知道对它们的要求是一招我们也一样。
在你的问题中,我们经常使用一种方法,onPrepare(Context formContext)
使用传入的上下文设置表单handeling。非常有用,以确保您不会在HttpSession
和/或在循环中使用表单时粘贴变量。