estoy haciendo JQuery Ajax mensajes y les gustaría cualquier actionmessages
, actionerrors
y fielderrors
añadido a la acción de regreso en la respuesta (en formato JSON).Struts2 JSON Plugin: ActionMessages Adición, ActionErrors y FieldErrors a la respuesta
que añade este resultado:
<result name="input" type="json">
<param name="ignoreHierarchy">false</param>
<param name="includeProperties">fieldErrors,actionErrors</param>
</result>
a mi configuración de la acción en el struts.xml
.
Obtengo: {"actionErrors":[],"fieldErrors":{}}
como respuesta, a pesar de que haya errores de campo en la pila de valores.
Si cambio de configuración resultado de:
<result name="input" type="json">
<param name="ignoreHierarchy">false</param>
<param name="root">fieldErrors</param>
</result>
la respuesta JSON es que esperaba ::
{"thePropertyWithValidationError":["You must supply correct information."]}
Realmente me gustaría que ambos errores de acción y los errores de campo incluidos en la respuesta, si posible.
¿Alguna idea? ¡¡Muchas gracias de antemano!!
Editar:
Creo que puede que tenga que utilizar algún tipo de expresión regular ... He intentado:
<result name="input" type="json">
<param name="ignoreHierarchy">false</param>
<param name="includeProperties">fieldErrors\[\d+\],actionErrors\[\d+\]</param>
</result>
con el mismo resultado:
{"actionErrors":[],"fieldErrors":{}}
También encontré esto bug report, que puede estar contribuyendo a mis problemas ya que estoy usando Struts v2.2.1. (V2.2.2 aún no está fuera)
Edición # 2:
Quizás el JSONValidationInterceptor es lo que necesito ... Me parece que no puede encontrar la manera de usarlo con mi costumbre jQuery Ajax mensajes ...
estoy usando el interceptor JSON para poblar mis propiedades de abajo es mi configuración de la acción:
<action name="MyAction" method="add" class="com.test.actions.MyAction">
<interceptor-ref name="json" />
<interceptor-ref name="jsonValidationWorkflowStack"/>
<interceptor-ref name="MyCustomInterceptor" />
<result name="success" type="json" />
</action>
estoy publicando: {"struts.enableJSONValidation":"true", "testProperty":"true"}
La respuesta es simplemente reenvía a los resultados de la cartografía mundial, error.jsp (con los errores de campo que se muestran como los tengo configurado para mostrar en el error.jsp):
supongo que estaba esperando que si hubiera fielderrors/actionerrors en la pila, serían devueltos como JSON?
¡Gracias! No estaba configurando el parámetro ignoreHierarchy en falso. – Beez