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: [email protected]
Ä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
[email protected]
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
[email protected]
https://lists.sourceforge.net/lists/listinfo/displaytag-user