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调用,其中一次调用:

  1. 所有表格数据
  2. struts.enableJSONValidation
  3. 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了。