No same error...

Code:

<%
    class MyMap {
        public Map<String, String> map = new HashMap<String, String>();

        public MyMap(String a, String b, String c) {
            map.put("a", a);
            map.put("b", b);
            map.put("c", c);
        }

        public Map<String, String> getMap() {
           return map;
        }
    }

    List mapList = new ArrayList();
    for (int i = 0; i < 10; i++) {
        MyMap myMap = new MyMap("a" + String.valueOf(i), "b" + 
String.valueOf(i), "c" + String.valueOf(i));
        mapList.add(myMap);
    }

    request.setAttribute("testis", mapList);
%>
        <display:table name="testis" export="true">
            <display:setProperty name="export.excel.filename" value="test.xls"/>
            <display:column property="map(a)" title="A*"/>
            <display:column property="map(b)" title="B*"/>
            <display:column property="map(c)" title="C*"/>

        </display:table>

    <%@ include file="footer.jsp" %>


Error:
javax.servlet.jsp.JspException: Error looking up property "map(a)" in object 
type "org.apache.jsp.viewDamageStatistic_jsp$1MyMap". 
org.displaytag.render.TableWriterTemplate.writeTable(TableWriterTemplate.java:161)
org.displaytag.render.HtmlTableWriter.writeTable(HtmlTableWriter.java:643)
org.displaytag.tags.TableTag.writeHTMLData(TableTag.java:1549)
org.displaytag.tags.TableTag.doEndTag(TableTag.java:1218)
org.apache.jsp.viewDamageStatistic_jsp._jspService(viewDamageStatistic_jsp.java:406)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:137)
javax.servlet.http.HttpServlet.service(HttpServlet.java:688)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:210)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
javax.servlet.http.HttpServlet.service(HttpServlet.java:688)
org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:358)
org.mortbay.jetty.servlet.WebApplicationHandler.dispatch(WebApplicationHandler.java:294)
org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:567)
org.mortbay.http.HttpContext.handle(HttpContext.java:1807)
org.mortbay.jetty.servlet.WebApplicationContext.handle(WebApplicationContext.java:525)
org.mortbay.http.HttpContext.handle(HttpContext.java:1757)
org.mortbay.http.HttpServer.service(HttpServer.java:879)
org.mortbay.http.HttpConnection.service(HttpConnection.java:789)
org.mortbay.http.HttpConnection.handleNext(HttpConnection.java:960)
org.mortbay.http.HttpConnection.handle(HttpConnection.java:806)
org.mortbay.http.SocketListener.handleConnection(SocketListener.java:218)
org.mortbay.util.ThreadedServer.handle(ThreadedServer.java:331)
org.mortbay.util.ThreadPool$PoolThread.run(ThreadPool.java:520)


-----Ursprungligt meddelande-----
Från: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] För Ed Webb
Skickat: den 20 februari 2008 11:24
Till: displaytag-user@lists.sourceforge.net
Ämne: Re: [displaytag-user] Creating display tables from 2D string array

Simon Rydberg wrote:
> Hmmm thanks for a fast reply.
>
> How is that suppose to work?
>
> I have made a little example but I cannot get it to work.
> In jsp-file
> <%
>     Map<String, String> map = new HashMap<String, String>();
>     for (int i = 0; i < 10; i++) {
>         map.put("a", "a" + String.valueOf(i));
>         map.put("b", "a" + String.valueOf(i));
>         map.put("c", "a" + String.valueOf(i));
>     }
>     request.setAttribute("map", map);
> %>
>         <display:table name="map" export="true" pagesize="10000" 
> defaultorder="descending">
>             <display:setProperty name="export.excel.filename" 
> value="test.xls"/>
>             <display:column property="map(a)" title="A*"/>
>             <display:column property="map(b)" title="B*"/>
>             <display:column property="map(c)" title="C*"/>
>
>         </display:table>
>
>
> javax.servlet.jsp.JspException: Error looking up property "map(a)" in object 
> type "java.lang.String". 
That is because your data object is a Map of Strings and not of objects 
containing a getMap() method. It's using the Map as a source of rows 
(each entry =  one row) and then trying to call getMap() on the value of 
the Map entry's value which is, as it tells you, of type java.lang.String.


Create a class:

public class MyMap {
    private Map<String, String> map = new HashMap<String, String>();

    public MyMap(String a, String b, String c) {
       map.put("A", a);
       map.put("B", b);
       map.put("C", c);
    }

    public Map<String, String> getMap() {
       return map;
    }
}


In a jsp file:

<%
    List<MyMap> map = new ArrayList<MyMap>();
    for (int i = 0; i < 10; i++) {
        map.add(new MyMap("a" + i, "b" + i, "c" + i));
    }
    request.setAttribute("map", map);
%>

        <display:table name="map">
            <display:column property="map(A)" title="A*"/>
            <display:column property="map(B)" title="B*"/>
            <display:column property="map(C)" title="C*"/>
        </display:table>

Does that work any better?

Ed!


-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
displaytag-user mailing list
displaytag-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/displaytag-user




-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
displaytag-user mailing list
displaytag-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/displaytag-user

Reply via email to