Details
-
Type:
Bug
-
Status:
Reopened
-
Priority:
Major
-
Resolution: Unresolved
-
Affects Version/s: 1.1
-
Fix Version/s: 1.3
-
Component/s: None
-
Labels:None
-
Application server:TC 4.1.31
Description
I made a TableDecorator to use displaytags on a list of Object[], where I defined all properties in the customized TableDecorator.
It seem to work fine when displayin on web, with sorting and everything, but when trying to export to Excel, it throws an exception for propertyNotFound.
the class :
package no.song.polka.web.decorators;
import org.displaytag.decorator.TableDecorator;
import org.apache.log4j.Logger;
import no.song.polka.business.*;
/**
* Created by IntelliJ IDEA.
* User: Frode Halvorsen
* Date: 12.feb.2005
* Time: 02:05:18
* To change this template use File | Settings | File Templates.
*/
public class ResponsibleProviders extends TableDecorator {
private final Logger log = Logger.getLogger(getClass().getName() + "(" + System.identityHashCode(this) + ")");
private Object[] getObjects() {
return (Object[]) getCurrentRowObject();
// return (Object[]) ((ArrayList) getDecoratedObject()).get(getListIndex());
}
public String getFromNumber() {
return ((String) getObjects()[0]).split("-")[0];
}
public String getSeries() {
String series = (String) getObjects()[0];
String numbers[] = series.split("-");
return numbers[0].equals(numbers[1]) ? numbers[0] : series;
}
public String getToNumber() {
String numbers[] = ((String) getObjects()[0]).split("-");
return numbers[0].equals(numbers[1]) ? " " : numbers[1];
}
public String getDsp() {
return "" + (Destination) getObjects()[1];
}
public String getOdsp() {
return "" + (Destination) getObjects()[2];
}
}
....
the usage :
<display:table name="result" htmlId="searchResult" id="row" class="polka" export="true" requestURI="p_17.spr?reuse=true" decorator="no.song.polka.web.decorators.ResponsibleProviders">
<display:setProperty name="basic.msg.empty_list_row" value='<tr class="empty"><td colspan="{0}">Søk på nytt.</td></tr>'/>
<display:setProperty name="export.excel.filename" value="providers.xls"/>
<!--display:column property="fromNumber" title="Telefonnummer" /-->
<!--display:column property="toNumber" title="(serie-slutt)" /-->
<display:column property="series" title="Telefonnummer" sortable="true"/>
<display:column property="dsp" title="Nåværende Tilbyder" />
<display:column property="odsp" title="Opprinnelig tilbyder" />
</display:table>
....
the stacktrace when clicking 'excel' :
Exception: [.LookupUtil] Error looking up property "series" in object type "[Ljava.lang.Object;". Cause: Unknown property 'series'
at org.displaytag.util.LookupUtil.getBeanProperty(LookupUtil.java:141)
at org.displaytag.model.Column.getValue(Column.java:124)
at org.displaytag.export.BaseExportView.doExport(BaseExportView.java:265)
at org.displaytag.tags.TableTag.writeExport(TableTag.java:1469)
at org.displaytag.tags.TableTag.doExport(TableTag.java:1356)
at org.displaytag.tags.TableTag.doEndTag(TableTag.java:1227)
at org.apache.jsp.p_17_jsp._jspService(p_17_jsp.java:437)
.
.
.
.
It seem to work fine when displayin on web, with sorting and everything, but when trying to export to Excel, it throws an exception for propertyNotFound.
the class :
package no.song.polka.web.decorators;
import org.displaytag.decorator.TableDecorator;
import org.apache.log4j.Logger;
import no.song.polka.business.*;
/**
* Created by IntelliJ IDEA.
* User: Frode Halvorsen
* Date: 12.feb.2005
* Time: 02:05:18
* To change this template use File | Settings | File Templates.
*/
public class ResponsibleProviders extends TableDecorator {
private final Logger log = Logger.getLogger(getClass().getName() + "(" + System.identityHashCode(this) + ")");
private Object[] getObjects() {
return (Object[]) getCurrentRowObject();
// return (Object[]) ((ArrayList) getDecoratedObject()).get(getListIndex());
}
public String getFromNumber() {
return ((String) getObjects()[0]).split("-")[0];
}
public String getSeries() {
String series = (String) getObjects()[0];
String numbers[] = series.split("-");
return numbers[0].equals(numbers[1]) ? numbers[0] : series;
}
public String getToNumber() {
String numbers[] = ((String) getObjects()[0]).split("-");
return numbers[0].equals(numbers[1]) ? " " : numbers[1];
}
public String getDsp() {
return "" + (Destination) getObjects()[1];
}
public String getOdsp() {
return "" + (Destination) getObjects()[2];
}
}
....
the usage :
<display:table name="result" htmlId="searchResult" id="row" class="polka" export="true" requestURI="p_17.spr?reuse=true" decorator="no.song.polka.web.decorators.ResponsibleProviders">
<display:setProperty name="basic.msg.empty_list_row" value='<tr class="empty"><td colspan="{0}">Søk på nytt.</td></tr>'/>
<display:setProperty name="export.excel.filename" value="providers.xls"/>
<!--display:column property="fromNumber" title="Telefonnummer" /-->
<!--display:column property="toNumber" title="(serie-slutt)" /-->
<display:column property="series" title="Telefonnummer" sortable="true"/>
<display:column property="dsp" title="Nåværende Tilbyder" />
<display:column property="odsp" title="Opprinnelig tilbyder" />
</display:table>
....
the stacktrace when clicking 'excel' :
Exception: [.LookupUtil] Error looking up property "series" in object type "[Ljava.lang.Object;". Cause: Unknown property 'series'
at org.displaytag.util.LookupUtil.getBeanProperty(LookupUtil.java:141)
at org.displaytag.model.Column.getValue(Column.java:124)
at org.displaytag.export.BaseExportView.doExport(BaseExportView.java:265)
at org.displaytag.tags.TableTag.writeExport(TableTag.java:1469)
at org.displaytag.tags.TableTag.doExport(TableTag.java:1356)
at org.displaytag.tags.TableTag.doEndTag(TableTag.java:1227)
at org.apache.jsp.p_17_jsp._jspService(p_17_jsp.java:437)
.
.
.
.
Attachments
Issue Links
| This issue is duplicated by: | ||||
| DISPL-295 | Export Decorater no longer defaults to table decorator |
|
|
|
<display:setProperty name="export.excel.decorator" value="no.song.polka.web.decorators.ResponsibleProviders" />
The Excel, PDF, and RTF exporters look for their own decorators as usually their decorators do Hssf or iText work, whereas the the HTML decorator does html-related work.