pradeep_brat
asked on
YUI Datatable and Struts2. Not getting the XML Data from the Action Class
Hi
I am using Yahoo User Interface for javascript in my project. I am using the Datatable of YUI. There i am trying to get the Data from XML by refering to the ACtion class. But i am not able to get the data to the datatable. I am attaching the code that i have used.
JAVASCRIPT::
function onClickLoad()
{
var callback={
success:function(o){
var xmlDoc = o.responseXML;
var myColumnDefs = [
{key:"Company", label:"Code"},
{key:"Title", label:"Code"},
{key:"Name", label:"Code"},
{key:"Phone", label:"Code"},
{key:"Email", label:"Code"}
];
var root = o.responseXML.documentElem ent;
alert("responseXML--"+o.re sponseXML. documentEl ement);
/*
var oTitle = root.getElementsByTagName( 'descripti on')[0].fi rstChild.n odeValue;
var oDateTime = root.getElementsByTagName( 'lastBuild Date')[0]. firstChild .nodeValue ;
var descriptionNode = root.getElementsByTagName( 'descripti on')[1].fi rstChild.n odeValue;
*/
var myDataSource = new YAHOO.util.DataSource(xmlD oc);
myDataSource.responseType = YAHOO.util.DataSource.TYPE _XML;
myDataSource.connMethodPos t = true;
// Define the data schema
myDataSource.responseSchem a = {
resultNode:"Item",
fields:["Company","Title", "Name","Em ail","Phon e"]
};
var myDataTable = new YAHOO.widget.DataTable("ce llblock1", myColumnDe fs,myDataS ource,
{caption:" ",selectionMode:"cellblock "});
myDataTable.subscribe("cel lMouseover Event", myDataTable.onEventHighlig htCell);
myDataTable.subscribe("cel lMouseoutE vent", myDataTable.onEventUnhighl ightCell);
myDataTable.subscribe("cel lClickEven t", myDataTable.onEventSelectC ell);
myDataTable.subscribe("cel lClickEven t",functio n(e){
var ar=myDataTable.getSelected TdEls();
var i=0;
for(i=0;i<ar.length;i++)
{
if(document.all){
addRow(ar[i].innerText);
} else{
addRow(ar[i].textContent);
}
}
});
},
failure:function(o){
alet("Failure")
}
}
var sUrl = '../bills/getICDCPT.action ?name=Prad eep';
var request = YAHOO.util.Connect.asyncRe quest('POS T', sUrl, callback);
}
ACTION CLASS (.java)
public class DisplayGetCodesAction extends ActionSupport implements ServletRequestAware,Servle tResponseA ware{
private HttpServletRequest request;
private HttpServletResponse response;
private String name;
public static final long serialVersionUID=876786786 786L;
public String execute() throws Exception{
System.out.println("HI IN CPT ICD SERACH");
StringBuffer sb=new StringBuffer();
sb.append("<Item>");
sb.append("<Company>BA</Co mpany>");
sb.append("<Title>SE</Titl e>");
sb.append("<Name>XYZ</Name >");
sb.append("<Email>Xyz@gmai l.com</Ema il>");
sb.append("<Phone>87778789 </Phone>") ;
sb.append("</Item>");
response.setContentType("t ext/xml");
response.setHeader("Cache- Control", "no-cache");
response.getWriter().write (sb.toStri ng());
System.out.println("REQUES T Get::"+this.getName());
System.out.println("SB::"+ sb.toStrin g());
System.out.println("Respon se::"+resp onse.getCo ntentType( ));
//response.setStatus(HttpS ervletResp onse.SC_NO _CONTENT);
return SUCCESS;
}
public void setServletRequest(HttpServ letRequest request){
this.request = request;
}
public HttpServletRequest getServletRequest(){
return request;
}
public void setServletResponse(HttpSer vletRespon se response){
this.response = response;
}
public HttpServletResponse getServletResponse(){
return response;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
Tell me where i am going wrong.
I am using Yahoo User Interface for javascript in my project. I am using the Datatable of YUI. There i am trying to get the Data from XML by refering to the ACtion class. But i am not able to get the data to the datatable. I am attaching the code that i have used.
JAVASCRIPT::
function onClickLoad()
{
var callback={
success:function(o){
var xmlDoc = o.responseXML;
var myColumnDefs = [
{key:"Company", label:"Code"},
{key:"Title", label:"Code"},
{key:"Name", label:"Code"},
{key:"Phone", label:"Code"},
{key:"Email", label:"Code"}
];
var root = o.responseXML.documentElem
alert("responseXML--"+o.re
/*
var oTitle = root.getElementsByTagName(
var oDateTime = root.getElementsByTagName(
var descriptionNode = root.getElementsByTagName(
*/
var myDataSource = new YAHOO.util.DataSource(xmlD
myDataSource.responseType = YAHOO.util.DataSource.TYPE
myDataSource.connMethodPos
// Define the data schema
myDataSource.responseSchem
resultNode:"Item",
fields:["Company","Title",
};
var myDataTable = new YAHOO.widget.DataTable("ce
{caption:" ",selectionMode:"cellblock
myDataTable.subscribe("cel
myDataTable.subscribe("cel
myDataTable.subscribe("cel
myDataTable.subscribe("cel
var ar=myDataTable.getSelected
var i=0;
for(i=0;i<ar.length;i++)
{
if(document.all){
addRow(ar[i].innerText);
} else{
addRow(ar[i].textContent);
}
}
});
},
failure:function(o){
alet("Failure")
}
}
var sUrl = '../bills/getICDCPT.action
var request = YAHOO.util.Connect.asyncRe
}
ACTION CLASS (.java)
public class DisplayGetCodesAction extends ActionSupport implements ServletRequestAware,Servle
private HttpServletRequest request;
private HttpServletResponse response;
private String name;
public static final long serialVersionUID=876786786
public String execute() throws Exception{
System.out.println("HI IN CPT ICD SERACH");
StringBuffer sb=new StringBuffer();
sb.append("<Item>");
sb.append("<Company>BA</Co
sb.append("<Title>SE</Titl
sb.append("<Name>XYZ</Name
sb.append("<Email>Xyz@gmai
sb.append("<Phone>87778789
sb.append("</Item>");
response.setContentType("t
response.setHeader("Cache-
response.getWriter().write
System.out.println("REQUES
System.out.println("SB::"+
System.out.println("Respon
//response.setStatus(HttpS
return SUCCESS;
}
public void setServletRequest(HttpServ
this.request = request;
}
public HttpServletRequest getServletRequest(){
return request;
}
public void setServletResponse(HttpSer
this.response = response;
}
public HttpServletResponse getServletResponse(){
return response;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
Tell me where i am going wrong.
ASKER
Ya that gets printed. But my issue is related to geeting the data within the XML tags to the YUI Datatatable. I do not think we have anythink much to do with the SOP Statement..
Thanks !!
Thanks !!
ASKER
Hi i got the solution i have used the Text Type from databae and its working fine..
function onClickLoad()
{
var myColumnDefs = [
{key:"Company", label:"Code"},
{key:"Title", label:"Code"},
{key:"Name", label:"Code"},
{key:"Phone", label:"Code"},
{key:"Email", label:"Code"}
];
/*this is wat i changed I made TYPE_XML to TYPE_TEXT*/
var myDataSource = new YAHOO.util.DataSource("../ bills/getC ode.action ?name=Prad eep");
myDataSource.responseType = YAHOO.util.DataSource.TYPE _TEXT;
myDataSource.responseSchem a = {
recordDelim: "\n", // Record delimiter
fieldDelim: ",", // Field delimiter
fields: ["Company","Title","Name", "Phone","E mail"] // Field names};
myDataTable = new YAHOO.widget.DataTable("ce llblock1",
myColumnDefs,
myDataSource,{caption:" ",selectionMode:"cellblock "});
myDataTable.subscribe("cel lMouseover Event", myDataTable.onEventHighlig htCell);
myDataTable.subscribe("cel lMouseoutE vent", myDataTable.onEventUnhighl ightCell);
myDataTable.subscribe("cel lClickEven t", myDataTable.onEventSelectC ell);
myDataTable.subscribe("cel lClickEven t",functio n(e){
var ar=myDataTable.getSelected TdEls();
var i=0;
for(i=0;i<ar.length;i++)
{
if(document.all){
addRow(ar[i].innerText);
} else{
addRow(ar[i].textContent);
}
}
});
}
And in Servlet (.java class)
response.getWriter().write ("Company, Title,Name ,Phone,Ema il\n" +
"Company,Title,Name,Phone, Email\n"+
"Company,Title,Name,Phone, Email\n"+
"Company,Title,Name,Phone, Email\n"+
"Company,Title,Name,Phone, Email\n"+
"Company,Title,Name,Phone, Email\n");
function onClickLoad()
{
var myColumnDefs = [
{key:"Company", label:"Code"},
{key:"Title", label:"Code"},
{key:"Name", label:"Code"},
{key:"Phone", label:"Code"},
{key:"Email", label:"Code"}
];
/*this is wat i changed I made TYPE_XML to TYPE_TEXT*/
var myDataSource = new YAHOO.util.DataSource("../
myDataSource.responseType = YAHOO.util.DataSource.TYPE
myDataSource.responseSchem
recordDelim: "\n", // Record delimiter
fieldDelim: ",", // Field delimiter
fields: ["Company","Title","Name",
myDataTable = new YAHOO.widget.DataTable("ce
myColumnDefs,
myDataSource,{caption:" ",selectionMode:"cellblock
myDataTable.subscribe("cel
myDataTable.subscribe("cel
myDataTable.subscribe("cel
myDataTable.subscribe("cel
var ar=myDataTable.getSelected
var i=0;
for(i=0;i<ar.length;i++)
{
if(document.all){
addRow(ar[i].innerText);
} else{
addRow(ar[i].textContent);
}
}
});
}
And in Servlet (.java class)
response.getWriter().write
"Company,Title,Name,Phone,
"Company,Title,Name,Phone,
"Company,Title,Name,Phone,
"Company,Title,Name,Phone,
"Company,Title,Name,Phone,
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
System.out.println("REQUES
get printed out?