在服务器端的代码,目的很简单就是把xml对象转变为字符串输出即可:
/**
*
* @author haoxiaojie
* @date 2006-10-16
* @param docid
* @return
* @note 生成的xml转换为string输出到客户端
*/
public String fetchXmlDocument(String docid) {
Session session = null;
String XMLString = "";
Documents documents = new Documents();
HtmlTableElement htmlTable = null;
try {
session = HibernateUtil.currentSession();
documents = (Documents) documents.loadSelf(session, docid);
if (documents != null) {
Mudledir mudledir = documents.fetchMudleObject(session);
Set set = mudledir.getPowerPath();
if (!set.isEmpty()) {
XMLOutputter outputter = new XMLOutputter();
htmlTable = new HtmlTableElement();
htmlTable.setBorder("1");
htmlTable.setTablebgcolor("#55aa11");
htmlTable.setWidth("100%");
htmlTable.setCellpadding("0");
htmlTable.setCellspacing("0");
Element row = htmlTable.addRow("001");
Iterator iterator = set.iterator();
while (iterator.hasNext()) {
Element col = htmlTable.creatTd("center");
HtmlButtonElement buttonElement = new HtmlButtonElement("click me");
PowerPath powerPath = (PowerPath) iterator.next();
buttonElement.setOnclick("javascript:window.alert('"+powerPath.getPath()+"')");
col.addContent(buttonElement.getButton());
row.addContent(col);
} // end_while
XMLString = outputter.outputString(htmlTable.getTable());
} // end_if(set)
} // end_if
} catch (Exception e) {
e.printStackTrace();
} finally {
HibernateUtil.closeSession();
} // end_try
System.out.println(XMLString);
return XMLString;
} // end_fun
客户端关于js代码:
function doOnRowSelected(id){
if(id == "810710"){
return all;
} else {
tomdoc.fetchXmlDocument(id,callshowxml);
} // end_if
} //end_fun
/**
* callshowxml
* @param {xmldocument} data
* @note retuen xml to html table
*/
function callshowxml(data) {
if (data != null && data != ""){
DWRUtil.setValue("xmldoc",data);
} // end_if
} // end_fun
这样在FF以及浏览器都可以解决这个问题,目前FF与IE还有一些差别的,这对基于ajax的开发造成不少麻烦,希望这些组织在兼容性方面作出更好的努力!
/**
*
* @author haoxiaojie
* @date 2006-10-16
* @param docid
* @return
* @note 生成的xml转换为string输出到客户端
*/
public String fetchXmlDocument(String docid) {
Session session = null;
String XMLString = "";
Documents documents = new Documents();
HtmlTableElement htmlTable = null;
try {
session = HibernateUtil.currentSession();
documents = (Documents) documents.loadSelf(session, docid);
if (documents != null) {
Mudledir mudledir = documents.fetchMudleObject(session);
Set set = mudledir.getPowerPath();
if (!set.isEmpty()) {
XMLOutputter outputter = new XMLOutputter();
htmlTable = new HtmlTableElement();
htmlTable.setBorder("1");
htmlTable.setTablebgcolor("#55aa11");
htmlTable.setWidth("100%");
htmlTable.setCellpadding("0");
htmlTable.setCellspacing("0");
Element row = htmlTable.addRow("001");
Iterator iterator = set.iterator();
while (iterator.hasNext()) {
Element col = htmlTable.creatTd("center");
HtmlButtonElement buttonElement = new HtmlButtonElement("click me");
PowerPath powerPath = (PowerPath) iterator.next();
buttonElement.setOnclick("javascript:window.alert('"+powerPath.getPath()+"')");
col.addContent(buttonElement.getButton());
row.addContent(col);
} // end_while
XMLString = outputter.outputString(htmlTable.getTable());
} // end_if(set)
} // end_if
} catch (Exception e) {
e.printStackTrace();
} finally {
HibernateUtil.closeSession();
} // end_try
System.out.println(XMLString);
return XMLString;
} // end_fun
客户端关于js代码:
function doOnRowSelected(id){
if(id == "810710"){
return all;
} else {
tomdoc.fetchXmlDocument(id,callshowxml);
} // end_if
} //end_fun
/**
* callshowxml
* @param {xmldocument} data
* @note retuen xml to html table
*/
function callshowxml(data) {
if (data != null && data != ""){
DWRUtil.setValue("xmldoc",data);
} // end_if
} // end_fun
这样在FF以及浏览器都可以解决这个问题,目前FF与IE还有一些差别的,这对基于ajax的开发造成不少麻烦,希望这些组织在兼容性方面作出更好的努力!