jueves, 6 de mayo de 2010

POJOs y JS

Hola que tal a todos, últimamente he estado entretenido en el desarrollo de una aplicación de monitoreo, esta aplicación debe presentar ciertas ordenes ademas de su estado y ciertos parámetros cada determinado tiempo. Es un aplicación web y por ciertas restricciones que tenemos dentro de la compañía solo puedo desarrollar simples JSP y Servlets (seria mas fácil y rápido poder utilizar algún framework como JSF pero no nos es permitido); para hacerlo un poco mas dinámico, tengo ciertas llamadas AJAX hacia los servlets que me ayudan a recargar los datos necesarios y es aquí donde entra el punto en cuestión.


Los resultados de los servlets son guardados en simples clases de java creadas para el proyecto, estos resultados deben de ser regresados a los JSPs y eso por eso que todas las clases poseen un metodo toJSON(), este método crea un JSONObject, de la libreria json-simple (una librería simple y buena para codificar o decodificar JSON en java) el cual es regresado como String a la función JSP que haya echo la llamada donde es evaluada y renderizada por el explorador.

Aquí les pongo un ejemplo de como lo hago:


Tengo la clase Supervisor de Java:

public class Supervisor {
/*Table Definition*/
public static final String ID_COLUMN_NAME = "sup_id";
public static final String LOGIN_COLUMN_NAME = "login";
public static final String NAME_COLUMN_NAME ="name";
public static final String EMAIL_COLUMN_NAME = "email";
private long id;
private String login;
private String name;
private String email;
public Supervisor(long id, String login, String name, String email) {
this.id = id;
this.login = login;
this.name = name;
this.email = email;
}
/**
* @return the id
*/
public long getId() {
return id;
}
/**
* @param id the id to set
*/
public void setId(long id) {
this.id = id;
}
/**
* @return the login
*/
public String getLogin() {
return login;
}
/**
* @param login the login to set
*/
public void setLogin(String login) {
this.login = login;
}
/**
* @return the name
*/
public String getName() {
return name;
}
/**
* @param name the name to set
*/
public void setName(String name) {
this.name = name;
}
/**
* @return the email
*/
public String getEmail() {
return email;
}
/**
* @param email the email to set
*/
public void setEmail(String email) {
this.email = email;
}
public String toString(){
return this.name;
}
public JSONObject toJSON(){
JSONObject result = new JSONObject();
result.put(ID_COLUMN_NAME, new Long(this.id));
result.put(LOGIN_COLUMN_NAME, this.login);
result.put(NAME_COLUMN_NAME, this.name);
result.put(EMAIL_COLUMN_NAME, this.email);
return result;
}
}


y digamos que tengo un JSP que cuenta con la siguiente función (utilizando JQuery por su puesto, no puedo vivir sin el).

$.post('SvSupervisor.java',
{"action":"getsup","sup_id":1},
function(xmlHttpResponse){
//La respuesta contiene el objeto JSON del supervisor en cuestion
var supervisor = JSON.parse(xmlHttpResponse);
alert(supervisor.name);
//O el resto del tratamiento que se le quiera dar al objeto.
});

Todo esto lo hago a mano, la pregunta seria. Existe algun framework que nos ayude a relacionar un objeto Java con un objeto JavaScript facilmente?

Un saludo