HttpProxy dataProxy = new HttpProxy("EvaluacionJson.jsp?respuesta=revista");
RecordDef recordDef = new RecordDef(new FieldDef[]{
new StringFieldDef("clave", "clave"),
new StringFieldDef("name", "name"),});
JsonReader reader = new JsonReader(recordDef);
reader.setRoot("datos");
reader.setTotalProperty("totalCount");
Store store = new Store(dataProxy, reader, true);
store.reload();
ComboBox cbRevista = new ComboBox("Revista");
cbRevista.setStore(store);
cbRevista.setTitle("Revistas existentes");
cbRevista.setDisplayField("name");
cbRevista.setId("clave");
cbRevista.setMode(ComboBox.REMOTE);
cbRevista.setTriggerAction(ComboBox.ALL);
cbRevista.setLoadingText("Buscando...");
cbRevista.setWidth(300);
cbRevista.setEmptyText("-SELECCIONE UNA REVISTA-");
cbRevista.addListener(new ComboBoxListenerAdapter() {
public void onSelect(ComboBox comboBox, Record record, int index) {
String cveRev = record.getAsString("clave");
}
});
Podemos agregar el combo a un formpanel o aun panel, despues esta el listener del combo que escucha los eventos del combo con record.getAsString("clave") extraen el clave del combo.
El jsp :
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@page import="org.siir.json.JsonEvaluacion"%>
<%@page import="org.json.*"%>
<%
String respuesta = request.getParameter("respuesta");
if(respuesta.equals("revista")){
JsonEvaluacion jsonEvaluacion= new JsonEvaluacion();
String stringJson="";
try {
stringJson = jsonEvaluacion.obtenRevistasCandidatas();
} catch (JSONException ex) {
out.print("{\"totalCount\":0,\"datos\":[]}");
}
out.println(stringJson);
}
%>
el json:
package org.siir.json;
import java.util.List;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import org.siir.client.modelo.hemeroteca.RevistaExistente;
import org.siir.contenedor.ContenedorRevistaCandidata;
/**
*
* @author isaac
*/
public class JsonEvaluacion {
public String obtenRevistasCandidatas() throws JSONException{
ContenedorRevistaCandidata contenedorRev= new ContenedorRevistaCandidata();
List
JSONObject jsonObj = new JSONObject();
jsonObj.put("totalCount", listRev.size()+"");
JSONArray array = new JSONArray();
for(RevistaExistente rev:listRev){
JSONObject jsonDatos = new JSONObject();
jsonDatos.put("name",rev.getNombreRevista());
jsonDatos.put("clave",rev.getClave()+"");
array.put(jsonDatos);
}
jsonObj.put("datos",array);
return jsonObj.toString();
}
public static void main(String[] args) throws JSONException {
JsonEvaluacion jsonEvaluacion= new JsonEvaluacion();
System.out.println(jsonEvaluacion.obtenRevistasCandidatas());
}
}
el contenedor: claro esta tienen que iniciar una session hibernate, y todo ese choro, pueden reemplazar todo esto por un contenedor con sql, y con resultset construllen la lista de RevistaExistente
public List
Session s = sF.openSession();
Transaction tx = s.beginTransaction();
Query q = s.createQuery("from RevistaExistente p where p.estadoRevista = 1" );
List
tx.commit();
s.close();
return respuesta;
}
el modelo:
public class RevistaExistente implements IsSerializable {
private Long clave;
private String nombreRevista;
con sus getters y setters...