我目前正在为JSF / Richfaces应用程序添加功能,现在我们正在与外部Web服务集成。
使用这些服务完成的操作包括:获取用户,获取帐户,更新用户,更新帐户,创建用户,创建帐户。
这些服务以及意外的soapfaultexceptions可以在其响应类型中返回错误代码。主要表现为:登录已存在,密码不符合条件,帐号已存在,未找到用户。
调用如下:BackingBean>经理级别课程(主要是通过)> Web服务客户端(进行实际的WS调用)。对于GET操作,传递ID(用户名或帐号)并传回帐户或用户对象。更新传递用户/帐户对象,与创建相同。
将这些错误备份到backbean的最佳方法是什么,以便我可以通过UI处理它们?
您对提议的方法有何看法? #1是最简单的,#2似乎更优雅,更简单,#3对我来说是“最难的”,因为我从未使用装饰模式。然而,#3似乎是最优雅的,同时也是最耗时的实现。
如果您需要进一步澄清,请与我们联系。
谢谢,SO!
答案 0 :(得分:1)
最好使用异常(When to throw an exception)以编程方式进行限制。
首先问问自己这是一种特殊的情况吗?在您的情况下,它不仅仅是一个验证错误。例外情况会带来成本,并且无法保证您能够在链中进一步捕获异常。
两个2/3都是类似的解决方案,因为您只是想将其他信息返回给控制器。
选项3可以被认为更干净,但如果您有权访问用户/帐户类,则可以随时向该类添加可能包含验证错误的其他属性。
这种模式的一个很好的例子是ruby中的ActiveRecord,相同类型的模型。您在模型对象上调用save,如果发生错误,则会填充错误属性。
答案 1 :(得分:0)
抛出自定义异常或一组自定义异常,并在更高级别处理它。这是我处理它的首选方式,而不是Java中的状态代码,其中所有内容都按值传递,并为其他目的释放返回变量。
关于“继续投掷它”,不要在每个级别捕获并重新投掷,而只是捕捉到你可以对它做某事的级别,即。在这种情况下支持bean / UI。