4.XML/JSON异常包
Treelist、Report组件通过Http Request向服务器索取数据,如果服务器遇到异常,通常返回的Http状态码为非200,组件将直接抛出该异常页面。在Web Service规范中,如果服务器能捕捉到异常(try / catch),通常会采用SOAP协议中的fault包返回,使得客户端能比较友好地显示异常信息。
Supcan组件对非Web Service的普通XML/JSON格式的数据响应包也提供了类似的扩展支持,只要XML/JSON包符合如下格式(我们称之为 SoapLike 异常包,即格式参考自SOAP),客户端就能弹出用户能接受的错误信息:
<?xml version="1.0" encoding="UTF-8" ?>
<fault>
<faultcode>错误代码</faultcode> //或<code>
<faultstring>错误</faultstring>
<detail>详细描述</detail>
<reason>错误原因</reason>
<faultactor>错误角色</faultactor>
</fault>
在<fault>下,至少要有上述5种元素中的一种,Supcan组件就把这个包当作异常包看待,并以友好的提示弹出该信息。
比如,返回串:
<Fault><FaultString>不严重的异常</FaultString><detail>服务器过于繁忙, 请稍候再访问.</detail></Fault>
其界面表现为:
也支持JSON格式,例如:
{"Fault": {"faultCode":"3001", "detail": "服务繁忙"}}
在Treelist的"18.分页方案(一)"演示页中,后端源码中有一段模拟拒绝服务的SoapLike XML串,可参考这段C#源码(在技术分析区中).