You are viewing a plain text version of this content. The canonical link for it is here.
Posted to j-users@xerces.apache.org by Anthony Ikeda <an...@proxima-tech.com.au> on 2001/05/31 05:04:26 UTC
Recursive pattern using HashMaps
I have a class that operates in the same way a hashmap does and I want to be able to convert it to an org.w3c.dom.Element (then to an org.w3c.dom.Document or DocumentImpl).
The code I'm trying to use recurses onto itself to create a new element each time it comes across a nested HashMap object.
For example:
<%!
public Element convertHashMap(HashMap hm, Document doc){
Iterator it = hm.keySet().iterator();
while(it.hasNext()){
String key = (String)it.next(); //all hashmap keys are strings
Element topElement = doc.createElement(key);
Object obj = hm.get(key);
if(obj instanceof java.util.HashMap){
HashMap hm2 = (HashMap) obj;
Element tempElement = convertHashMap(hm2,doc);
if(tempElement!=null)
topElement.appendChild(tempElement);
}
}
return tempElement;
}
%>
When I try and run this method in a JSP I get:
Error: 500 Location: /Centauri/CommonCockpit/src/com/proxima/centauri/servlets/servicemodel/testPage.jspInternal Servlet Error:java.lang.IllegalStateException: Response has already been committed
at org.apache.tomcat.core.HttpServletResponseFacade.sendError(HttpServletResponseFacade.java:157)
at org.apache.jasper.runtime.JspServlet.unknownException(JspServlet.java:299)
at org.apache.jasper.runtime.JspServlet.service(JspServlet.java:377)
at com.borland.jbuilder.webserverglue.tomcat.jsp.JspLoaderEcho.service(Unknown Source)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.tomcat.core.ServletWrapper.handleRequest(ServletWrapper.java:503)
at org.apache.tomcat.core.ContextManager.service(ContextManager.java:559)
at org.apache.tomcat.service.http.HttpConnectionHandler.processConnection(HttpConnectionHandler.java:160)
at org.apache.tomcat.service.TcpConnectionThread.run(SimpleTcpEndpoint.java:338)
at java.lang.Thread.run(Thread.java:484)
Does this mean the doc has been closed or something? Is it possible to actually perform such an operation?
Cheers,
Anthony Ikeda