在服务器端调用方法时,如果某些参数出错,可以获取错误或警告列表,如果一切正常,则可以获得正确的答案。
例如,我将客户端定义的对象发送到服务器,我有逻辑来验证该对象是否正常,因此我可以返回与之相关的错误和警告列表客户端的对象定义,以便他可以正确地纠正它们,或者,如果验证通过,则说明一切正常。
可能的解决方案:我可以返回一个错误列表,所以,当一切正常时,列表为空,当我有一些错误或警告时,我可以处理它们并将它们显示给用户
这种做法是否正确?是否有任何设计模式以更好的方式做到这一点?我的背景是客户端 - 服务器架构,我将使用Business Delegate pattern从客户端调用的EJB来设计通信。
答案 0 :(得分:1)
如果客户端能够将对象发送到EJB,那么它可能是用Java编写的客户端。所以它实际上是一个调用EJB方法的丰富表示层。如果是这样,那么验证应该在这个表示层IMO中完成。
服务器可能需要为其自身的安全性添加额外的验证层,但在这种情况下,由于方法的合同是明确定义的,并且表示层应该验证对象并尊重合同,我只会在找到的第一个错误时抛出一个运行时异常。
如果你真的想在服务器端执行验证,我会使用选中的ValidationException
来表示错误列表。此异常可能包含消息列表,或包含相关参数值的消息键列表。这将取决于国际化的必要性(i18n),以及谁负责发布消息。
警告也可以放在此异常中(然后该消息将与标志或枚举关联)。如果客户端使用ignoreWarnings = false
调用方法,则会在异常中存储警告并抛出异常。如果它使用ignoreWarnings = true
调用方法,则会忽略警告,只有错误会导致抛出异常。