import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import com.autotoll.jv.erp.proxy.PortletActionBeanProxy;
import com.liferay.portal.struts.AJAXAction;
import com.liferay.portal.theme.ThemeDisplay;
import com.liferay.portal.util.WebKeys;
import com.autotoll.jv.pojo.impl.Citytable;
public class ShowCityAjax extends AJAXAction{
public String getText(ActionMapping arg0, ActionForm arg1,
HttpServletRequest request, HttpServletResponse response) throws Exception {
ThemeDisplay themeDisplay =
(ThemeDisplay) request.getAttribute(WebKeys.THEME_DISPLAY);
String language = themeDisplay.getLanguageId();
String pid = request.getParameter("pid");
String cityId = "";
String cityName = "";
Document document = DocumentHelper.createDocument();
Element root = document.addElement("city");
if (pid !=null && ! pid.trim().equals("")) {
List<Citytable> list =
PortletActionBeanProxy.getInstance().
getCityTableSvc().findCityByPId(Long.parseLong(pid));
if (list !=null && list.size()>0) {
for (Citytable city :list) {
cityId = city.getCityid().toString();
if(language.trim().equals("zh_CN")) {
cityName = city.getCitynameSc();
} else if(language.trim().equals("zh_TW")) {
cityName = city.getCitynameTc();
} else {
cityName = city.getCitynameEng();
}
Element cId = root.addElement("cityId");
Element cName = root.addElement("cityName");
cId.addText(cityId);
cName.addText(cityName);
}
}
}
// System.out.println(root.asXML());
return root.asXML();
}
jsp 页面:
function toXML(strxml){
try{
xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.loadXML(strxml);
} catch(e){
var oParser=new DOMParser();
xmlDoc=oParser.parseFromString(strxml,"text/xml");
}
return xmlDoc;
}
function getCity(obj){
var pid = obj.options[obj.selectedIndex].value;
if (pid != "") {
jQuery.ajax(
{url: '<%= themeDisplay.getPathMain() %>/erp/showCity',
data: {pid:pid},
success: setOptions});
} else {
var selectObj = document.getElementById('city_');
selectObj.options.length = 0;
selectObj.options.add(new Option('<liferay-ui:message key="erp.select.option.choose"/>',""));
document.getElementById("address-alert-span").style.display = "";
}
}
function setOptions(xml) {
var radioValue = getRadioValue();
var selectObj = document.getElementById('city_');
selectObj.options.length = 0;
var xmlobj = toXML(xml);
var cidArr = xmlobj.getElementsByTagName('city/cityId');
var cNameArr = xmlobj.getElementsByTagName('city/cityName');
selectObj.options.add(new Option('<liferay-ui:message key="erp.select.option.choose"/>',""));
for(var i=0; i<cidArr.length; i++){
selectObj.options.add(new Option(cNameArr[i].childNodes(0).nodeValue,cidArr[i].childNodes(0).nodeValue));
}
document.getElementById('city').value=cidArr[0].childNodes(0).nodeValue;
if (document.getElementById('city').value != "" && document.getElementById('address').value != "") {
document.getElementById("address-alert-span").style.display = "none";
} else {
document.getElementById("address-alert-span").style.display = "";
}
}