olivier dutranoit wrote:
my jsp is giving error
details?
----------------
public ActionForward fetchListOfDevelopmentAreas(ActionMapping mapping,
ActionForm form, HttpServletRequest request,
HttpServletResponse response) {
String regionId = (String) request.getParameter("region");
ArrayList listOfRegions = new ArrayList();
StringTokenizer strTok = new StringTokenizer(regionId, ",");
while (strTok.hasMoreTokens()) {
listOfRegions.add(strTok.nextToken());
}
HashMap tempDAHM = SupporterReportDBOperator.fetchListOfDAForRegion(listOfRegions);
// here tempDAHM contains data : "Heliópolis,Ixcán" (Special character data)
// fetchListOfDAForRegion(listOfRegions) fucntion is working fine , its just getting data from the DB.
// Here when I am printing tempDAHM 's value on console, its converting Heliópolis to Heli≤polis.So I cant even check for special symbol 'ó'.
formResponseForAJAX(response, tempDAHM);
return null;
}
--------------------------------------------------------------------------------------------
public void formResponseForAJAX(HttpServletResponse response, HashMap hmArg) {
response.setContentType("text/xml");
response.setHeader("Pragma", "no-cache");
response.addHeader("Cache-Control", "must-revalidate");
response.addHeader("Cache-Control", "no-cache");
response.addHeader("Cache-Control", "no-store");
response.setDateHeader("Expires", 0);
Map temphmArg = sortByValue(hmArg);
StringBuffer sb = new StringBuffer();
Set tempEntrySet = temphmArg.entrySet();
Iterator itr = tempEntrySet.iterator();
Map.Entry me = null;
if (temphmArg != null) {
sb.append("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
sb.append("<List>");
sb.append("<valid>true</valid>");
String key = null;
String value = null;
for (int i = 0; i < hmArg.size(); i++) {
me = (Map.Entry) itr.next();
key = me.getKey().toString();
value = me.getValue().toString();
sb.append("<Data>");
sb.append("<Id>" + key + "</Id>");
sb.append("<Name>" + value + "</Name >");
sb.append("</Data>");
}
sb.append("</List>");
try {
response.getWriter().write(sb.toString());
} catch (IOException e) {
// return mapping.findForward("errorPage");
}
} else {
sb.append("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
sb.append("<List>");
sb.append("<valid>false</valid>");
sb.append("</List>");
try {
response.getWriter().write(sb.toString());
} catch (IOException e) {
}
}
}
Below is the the jsp code where I will be calling the above java code:
function populateDA() {
regionList = "";
var doc = document.forms[0];
var count = 0;
emptyMultiSelectDropDown(document.getElementById("developmentArea"));
for (var i=0; i<doc.region.length;i++)
{
if (doc.region[i].selected)
{
count++;
if(regionList.length==0)
{
regionList+= doc.region[i].value;
}else {
regionList+= ','+doc.region[i].value;
}
}
}
if((doc.region.selectedIndex==0) && (count >1)){
alert("Please select either All or other values");
return false;
}
if(doc.region.selectedIndex == 0){
return false;
}
var url = "/supporterReports.do?methodName=fetchListOfDevelopmentAreas®ion="
+ regionList;
if (window.XMLHttpRequest) {
testReq = new XMLHttpRequest();
} else if (window.ActiveXObject) {
testReq = new ActiveXObject("Microsoft.XMLHTTP");
}
testReq.open("GET", url, true);
// This line of code -will open & create the request to be sent to the action method
testReq.onreadystatechange = handleHttpResponseDA;
testReq.send(null);
}
//ajax code to fetch DA list
function handleHttpResponseDA() {
if (testReq.readyState == 4) // when the request is ready
{
var xmlDoc = testReq.responseXML;
var validate = xmlDoc.getElementsByTagName("List");
try {
if (validate[0].childNodes[0].childNodes[0].nodeValue == "true") {
var selectBox = document.getElementById("developmentArea");
var selectedIndexValue=selectBox.value;
if (selectBox.options.length > 0) {
for ( var i = selectBox.options.length - 1; i > 0; i--) {
selectBox.remove(i);
}
}
for ( var i = 1; i < validate[0].childNodes.length; i++) {
var Option = document.createElement("OPTION");
Option.text = validate[0].childNodes[i].childNodes[1].childNodes[0].nodeValue;
Option.value = validate[0].childNodes[i].childNodes[0].childNodes[0].nodeValue;
selectBox.options.add(Option);
}
selectBox.value = selectedIndexValue ;
} else {
alert("There seems to be an error fetching. Please try again1.");
}
} catch (err) {
alert("There seems to be an error fetching. Please try again2.");
}
}
}
On execution I am getting alert "There seems to be an error fetching. Please try again2" as an error message.
This happens only when I have special characters in the data.