¿Para qué sirve la anotación @JSON en struts2-json?
Ejemplo: (consulta y adición de página)
Clase de entidad (dominio)
clase públicaFieldmanage implementa java.io.Serializable {
//Campo
privateInteger fieldManageId
privateString fieldManageName
privateString fieldManageDesc
privateString isuse
getter amp amp omitido Setter.
}
Canal de acceso a datos
fieldmanagedao de clase pública extendsHibernateEntityDao lt; Fieldmanage gt{
public booleanerofieldmanage(administración de campos administración de campos){
Pruebe {
esto. saveourupdate(field manager);
Devuelve verdadero
} catch(Exception e) {
e.printstacktrace();
}
Devuelve falso
}
publicList ltFieldmanage gtgetFieldmanageList(Nombre de cadena, intstart , int end){
string hql = " desde el campo administrar donde el campo administra el nombre como "" nombre "";
Lista ltFieldmanage gtlist = null
Intentar {
consulta q = this.getSession(). crear consulta(hql);
q .establecer primer resultado(inicio
q . fin);
lista = q . lista();
} captura (excepción e) {
e . p>}
Orden de devolución;
}
public intgetFieldmanageCount(nombre de cadena){
cadena hql = " seleccione recuento (* )desde el campo administrar donde el campo administra el nombre como "" nombre "";
int count = 0;
Pruebe {
query q =this. ).
crear consulta(hql);
count = integer . parse int(q . resultado único() . toString()
} captura (excepción e) {
e. printstacktrace();
}
returncount
}
Servicio de capa de lógica empresarial
public classFieldManageService {
//Inyección de primavera
privateFieldManageDao fieldManageDao;
public voids etfieldmanagedao(FieldManageDao FieldManageDao){
this . fieldManageDao;
}
public booleanerofieldmanage(administrar campo administrar campo){
Devolver fieldManageDao. operaFieldmanage(gestión de campos);
}
publicList ltFieldmanage gtgetFieldmanageList(nombre de cadena, intstart, int end){
List ltFieldmanage gtlist = null
Prueba {
list = fieldmanagedao . getfieldmanagelist(nombre, inicio, fin);
} catch (Excepción e) {
e . );
}
Orden de devolución;
}
public intgetFieldmanageCount(nombre de cadena){
Devolución fieldmanagedao.getfieldmanagecount(name);
}
}
Capa de control de Struts
Clase públicaFieldManageAction extiende ActionSupport {
privateFieldManageService fieldManageService;
privateFieldmanage fieldmanage
privateList ltFieldmanage gt data;
private int totalCount
privateString exitoso;
p>
//Paging
Comience con private int;
Límite de int privado;
Hay métodos getter y setter, pero el El método de inyección de servicio es el mejor. No lo entiendas.
cadena pública operaFieldmanage(){
prueba {
símbolo booleano = fieldmanageservice . ){
este conjunto éxito(" verdadero ");
} De lo contrario {
este conjunto éxito(" falso ");
}
} catch(Exception e) {
this .set Success(" false ");
e . p>
p>
}
Devuelve "operaFieldmanage";
}
publicString fieldManageList(){
String name = " ";
Pruebe {
if(if(el campo administrar objeto y nombre están vacíos){
nombre = campo administrar. getfieldmanagename() ;
p>
}
intlimitNo = 15;
if (¡límite!=0){
limitNo =límite ;
}
int count = fieldmanageservice . getfieldmanagecount(nombre);
Lista ltFieldmanage gtlist = fieldmanagelist (nombre, inicio, límite no); /p>
this.setData(lista);
this.setTotalCount(count);
} catch(excepción e) {
e. printstacktrace();
}
Devuelve esto correctamente;
}
}
Simplemente proporcione el get método en la acción, no es necesario utilizar otros complementos json para convertir la lista al formato json, ya que el complemento strut2 puede ayudarlo a identificar y convertir automáticamente, todo lo que necesita hacer es configurar los datos que obtiene. p>
Struts.xml
ltpackage name = " default " extends = " JSON-default "
ltaction name = " campo administrar _ * " método = " { 1 } " lass = " fieldManageAction " gt;
ltresult type = " json " gt
ltparam name = " include properties " gt; número total, datos.
* lt/param gt;
lt/result gt;
ltresult nombre = " operaFieldmanage " tipo = " JSON " gt
ltparam nombre = " incluir propiedades " gt; Successlt/param gt;
lt/result gt;
lt/action gt;
lt/package gt;
Extensiones = "json-default "Se debe configurar aquí para manejar json.
1. ltaction nombre="prueba" clase="com. TestAction" método="prueba"
ltresult tipo = "JSON"/ gt; -Devuelve las propiedades del bean de la acción al navegador en forma de cadena json-->;
lt/action gt
2. json- Default", el interceptor json está configurado de forma predeterminada, por lo que no puede coincidir. Una vez que el resultado se establece en json, el contenedor encapsulará automáticamente los atributos de la acción en un objeto json (completado por el interceptor json) y luego llamará al método de devolución de llamada js para devolver los datos json.
3. Si sigues la configuración en 1. Encontrará que la cadena json devuelta por el primer plano convierte todos los atributos de la acción en una cadena json y la devuelve al navegador (incluso a veces el resultado no se puede devolver y no se informa ningún error, pero la función de devolución de llamada no se puede ejecutar en el antecedentes), pero a veces necesitamos devolver algunos resultados basados en la situación real. ¿Cómo personalizar la salida de los resultados json? Los resultados proporcionan algunos parámetros para resolver este problema. Generalmente, los parámetros más utilizados son includeProperties y exclusionNullProperties. Por supuesto, existen otros métodos, como agregar comentarios json a los atributos de pojo.
Parámetro 4.includeProperties: el valor de propiedad que debe incluirse en el resultado de salida, donde la expresión regular coincide con el nombre de la propiedad. Se pueden completar varias expresiones regulares con división ",". Este parámetro devuelve directamente los datos json del objeto y no se requiere conversión de evaluación en la interfaz.
Por ejemplo, genere el número total de todos los atributos y elementos del objeto de datos.
ltresult type = " json " gt
ltparam name = " incluir propiedades " gt número total, datos. * lt/param gt;
lt/result gt;
5.parámetros excludeProperties: valores de atributos que deben excluirse de los resultados de salida y también admiten coincidencias de expresiones regulares. nombres de atributos. Puede usar "," para dividir y completar múltiples expresiones regulares, similar a includeProperties.
6. El manejo especial de ciertos atributos se puede serializar en el código de acción, por ejemplo:
[6.1] De forma predeterminada, todo lo que comience con el método get será un cambio serializado. Si no desea serializar, se deben anotar los métodos de la acción.
@JSON(serialization=false)
[6.2] Si se agrega @json(name="newName ") al método get del atributo, el nombre de datos json devuelto es el nuevo nombre asignado.
[6.3]@ JSON(format = " yyyy-mm-DD ' t ' hh:mm:ss ") establece el formato para imprimir y analizar los campos del formulario de fecha.
[6.4]@JSON(deserialize=true) establece si se deserializa este atributo.