strust 2(jquery插件)将动作exception显示为ajax错误
你能告诉我如何获得动作exception,转换并将它们作为json错误发送。 我使用strust2 jquery插件用ajaxvalidation我的表单。 框架将通过定义sj:submit validate=true
并注释操作来自动完成
行动是:
@Validations(requiredStrings = { @RequiredStringValidator(fieldName = "username", key = "validate.required"), @RequiredStringValidator(fieldName = "password", key = "validate.required")} public String confirm(){ service.canLogin(username,password) }
canLogin
可能抛出exception,例如。 当它无法连接到数据库或shomething时。
序列化我在下面添加的摘要:
false actionErrors\[\d+\], fieldErrors\..+$,actionMessages\[\d+\]
当我提交包含无效数据的表单时,表单会正确validation。 当exceptionrasies页面没有序列化json结果时。
在调试期间,我发现对服务器进行了两次json调用,其中一次调用:
- 所有表格数据
- struts.enableJSONValidation
- struts.validateOnly
一个只有全部用于数据
我终于找到了答案! 希望对别人有用……
目标是捕获业务exception并将其作为ajaxvalidationexception显示给用户。
将sj:form
的目标设置为一些虚拟div分析,你的数据并做你想做的事情。
jsp将是
js将是
$.subscribe("formServerErrorAnalyze", function(event, data) { var data = event.originalEvent.data; if (data=='Some Exception from server') { //Do some thing to show error. //eg: $("#formerrors").html(data) } else { // Put the content of dummy node into content and remove dummy html var working = $("#dummy").contents(); var ref = $("#content").contents(); $("#dummy").append(ref); $("#content").append(working); } $("#dummy").html(''); });
struts-jquery中有一个错误。 如果你没有设置sj:submit
的目标sj:submit
标签onSuccessTopics
将不会触发! 如果这个问题解决了,你就不再需要虚拟div了。