Java 如何使用AJAX将ActionErrors、FieldErrors返回为JSON并在表单上显示错误

Java 如何使用AJAX将ActionErrors、FieldErrors返回为JSON并在表单上显示错误,java,json,validation,struts2,liferay,Java,Json,Validation,Struts2,Liferay,我想知道是否有人能对以下内容提出一些想法 获取了一个带有validate()方法的操作类,该方法在验证失败时返回带有actionErrors,fieldErrors的输入JSP 我只想获取验证错误(JSON数据?),并在现有页面上显示错误并突出显示字段,而不是用新的响应JSP刷新整个JSP 客户端使用JQuery,Struts2作为MVC框架,Liferay作为门户服务器 以下是我尝试的代码: public void validate(){ setActionErrors(validateDat

我想知道是否有人能对以下内容提出一些想法

获取了一个带有
validate()
方法的操作类,该方法在验证失败时返回带有
actionErrors
fieldErrors
的输入JSP

我只想获取验证错误(JSON数据?),并在现有页面上显示错误并突出显示字段,而不是用新的响应JSP刷新整个JSP

客户端使用JQuery,Struts2作为MVC框架,Liferay作为门户服务器

以下是我尝试的代码:

public void validate(){
setActionErrors(validateData(this));
}
struts.xml:


/jsp/addDataAsync.jsp
JSP:


Js:

jQuery.ajax({
键入:“POST”,
url:“”,
数据:jQuery(“#form”).serialize(),
数据类型:“json”,
成功:功能(数据){
警报(“数据”+数据);
}
});
在执行验证方法之后。该流正在执行action类的默认方法,即使在errorlist中添加了错误并通过
setActionErrors()
方法进行设置时也是如此。当拦截器和调用方法被调用时,我可以看到resultcode:as
“input”
和result:as
“jsonresult”


非常感谢您在这个问题上提供的帮助。

您可以将
输入
结果配置为
json
类型的操作,并使用
includeProperties
参数指定生成的json

<result name="input" type="json">
  <param name="ignoreHierarchy">false</param>
  <param name="includeProperties">^actionErrors\[\d+\],^fieldErrors\['\w+'\]\[\d+\]</param>
</result>

假的
^actionErrors\[\d+\],^fieldErrors\['\w+'\]\[\d+\]

action类应该扩展
ActionSupport
,因此这些属性将可用。

您可以像其他任何字段一样公开操作错误;请查看文档。以下操作已成功:fieldErrors,但我希望同时执行操作和字段错误,我尝试了,^actionErrors[\d+]\.*,^fieldErrors['\w+']\.*未成功,重新创建日志:obj{“errors”:{}