Spesso capita di dover effettuare evolutive/manutenzioni su progetti vecchi, realizzati ad esempio Struts 1.3.
Qui metto un esempio di una classica combo a cascata (provincia comune) realizzata utilizzando Ajax e Json.
Ho utilizzato la libreria json-simple-1.1.1.jar per la creazione dell'oggetto Json lista dei comuni italiani ottenuto filtrando per provincia.
Come framework Javascript ho utilizzato Jquery versione 1.7.2.
JSP
ACTION
Qui metto un esempio di una classica combo a cascata (provincia comune) realizzata utilizzando Ajax e Json.
Ho utilizzato la libreria json-simple-1.1.1.jar per la creazione dell'oggetto Json lista dei comuni italiani ottenuto filtrando per provincia.
Come framework Javascript ho utilizzato Jquery versione 1.7.2.
JSP
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@taglib uri="http://struts.apache.org/tags-html" prefix="html"%>
<%@taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<script src="js/jquery-1.7.2.js"></script>
<script src="js/jquery-ui-1.8.22.custom.min.js"></script>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>TEST</title>
<script>
//js function per caricare via ajax i comuni
function caricaComboComuni(){
$("#loading").show();
$("#loaded").hide();
$.ajax({
url: "caricaComune.do?cdProv="+document.getElementById("cdProv").value,
dataType: "json",
success:
function (data){
$("select#idComuni option").remove();
$("#loading").hide();
$("#loaded").show();
$.each(data.listaComuni, function(key, val){
$("select#idComuni").append('<option value="' + val.codice + '">' + val.descrizione + '</option>');
})
;
},
error: function (data){
alert(data);
}
})
}
</script>
</head>
<body>
<html:form action="/goToHello">
<html:select property="descrizione" styleId="cdProv" onchange="caricaComboComuni()" >
<html:optionsCollection property="listaDati" label="descrizione" value="codice" />
</html:select>
<br/>
<div id="loading" style="display:none;">
<img src="img/ajax-loader.gif"/>
</div>
<div id="loaded">
<html:select property="comune" styleId="idComuni"></html:select>
</div>
<br/>
<input type="submit" value="go" />
</html:form>
</body>
</html>
ACTION
package it.action;
import it.beans.ComuneBean;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
public class SelectComune extends Action {
public static JSONObject getJsonFromMyFormObject(List<ComuneBean> form)
{
JSONObject responseDetailsJson = new JSONObject();
JSONArray jsonArray = new JSONArray();
for (int i = 0; i < form.size(); i++)
{
JSONObject formDetailsJson = new JSONObject();
formDetailsJson.put("codice", form.get(i).getCodice()+"-"+form.get(i).getDescrizione());
formDetailsJson.put("descrizione", form.get(i).getDescrizione());
jsonArray.add(formDetailsJson);
}
responseDetailsJson.put("listaComuni", jsonArray);
return responseDetailsJson;
}
public ActionForward execute(ActionMapping mapping,ActionForm form,HttpServletRequest request,HttpServletResponse response)throws Exception
{
String codiceProv=request.getParameter("cdProv");
List<ComuneBean> listaComuni=getComuneByProv(codiceProv);
PrintWriter out = response.getWriter();
out.write(getJsonFromMyFormObject(listaComuni).toJSONString());
out.close();
return null;
}
private List<ComuneBean> getComuneByProv(String codProv) throws Exception{
String query="SELECT cd_catastale,descrizione FROM S_COMUNE where PROVINCIA_ID=? order by DESCRIZIONE";
List<ComuneBean> l=new ArrayList<ComuneBean>();
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection conn=DriverManager.getConnection("jdbc:odbc:mydb","test","test");
PreparedStatement pst=conn.prepareStatement(query);
pst.setString(1, codProv);
ResultSet rs=pst.executeQuery();
while(rs.next()){
ComuneBean c=new ComuneBean();
c.setCodice(rs.getString("cd_catastale"));
c.setDescrizione(rs.getString("descrizione").trim());
l.add(c);
}
//Thread.sleep(3000);
rs.close();
pst.close();
conn.close();
return l;
}
}
Nessun commento:
Posta un commento