繁体   English   中英

在挂毯页面中调用业务逻辑的最佳“场所”?

[英]the best “place” to invoke business logic in a Tapestry page?

[Tapestry版本:5.4-rc-1]

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

  • 在表单提交事件处理程序内部:我只是将“表单上下文”存储在变量中(类似:“ addThis”,“ removeThat”,“ partialUpdate”,“ save”)。 这是因为我可以触发来自不同的Submit / linksubmit组件的表单提交-可能执行不同的业务逻辑
  • 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM