I put this same code into a test project that I use and it worked fine for me. Are you sure that your re-compiled decorator class is being deployed into your servlet container?
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
I use Tomcat 5.59 and myeclipseide plug-in with Eclipse for this project. The class file appears to be deployed properly. I am still getting the following error message:
Exception: [.LookupUtil] Error looking up property "groupFiles" in object type "org.displaytag.customize.Wrapper". Cause: null
org.displaytag.util.LookupUtil.getBeanProperty(LookupUtil.java:220)
org.displaytag.model.Column.getValue(Column.java:105)
org.displaytag.model.Column.createChoppedAndLinkedValue(Column.java:162)
org.displaytag.model.Column.getOpenTag(Column.java:138)
org.displaytag.tags.TableTag.writeTableBody(TableTag.java:1645)
org.displaytag.tags.TableTag.writeHTMLData(TableTag.java:1418)
org.displaytag.tags.TableTag.doEndTag(TableTag.java:1039)
org.apache.jsp.cur_jsp._jspx_meth_display_table_0(org.apache.jsp.cur_jsp:856)
org.apache.jsp.cur_jsp._jspx_meth_c_when_5(org.apache.jsp.cur_jsp:801)
org.apache.jsp.cur_jsp._jspx_meth_c_choose_3(org.apache.jsp.cur_jsp:766)
org.apache.jsp.cur_jsp._jspService(org.apache.jsp.cur_jsp:245)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:322)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:291)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
Thanks,
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
This is the same environment that I am using. Can you set a breakpoint on your decorator class in the constructor so you can see if it is being called correctly?
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
public String getFoo() {
BoData bd = (BoData) this.getCurrentRowObject();
...
return results;
}
--- End Example ---
Note that the only change was to rename "BODData" to "BoData".
It also appears that if the decorator is "incorrectly named" the getter cannot be found. In the example below, the field called "foo", normally mapped to "getFoo()" will not be found, as it will look for "getfoo()" -- violating the spec. I believe this error is due to BeanUtils, but don't have time to track it down.
--- Example ---
Will Fail:
public class DecoratorBODList extends TableDecorator {
public String getFoo() {
...
}
...
}
Will Work:
public class DecoratorBoList extends TableDecorator {
public String getFoo() {
...
}
...
}
--- End Example ---
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hi,
I use JSTL sql tag library to generate a result set (flst) based on the following SQL query:
select group_name from user_groups as c where c.login_id like 'xxx' order by c.group_name
I use the following displaytag table to display result.
<display:table name="${flst.rows}" pagesize="25" defaultsort="1" defaultorder="ascending" export="true">
<display:column property="group_name" title="Group Name" sortable="true"/>
</display:table>
I'd like to add one more column after group_name that displays a HTML link based on the group_name. I changed the table code into:
<display:table name="${flst.rows}" pagesize="25" defaultsort="1" defaultorder="ascending" export="true" decorator="org.displaytag.customize.Wrapper">
<display:column property="group_name" title="Group Name" sortable="true"/>
<display:column property="groupFiles" title="Group Name" />
</display:table>
Below is the code I wrote for the wrapper.java program.
package org.displaytag.customize;
import org.displaytag.decorator.TableDecorator;
public class Wrapper
extends TableDecorator
{
public String group_name;
}
I am getting the following errors:
javax.servlet.ServletException: Error looking up property "groupFiles" in object type "org.displaytag.customize.Wrapper".
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:848)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:781)
org.apache.jsp.cur_jsp._jspService(org.apache.jsp.cur_jsp:260)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:322)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:291)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
Obviously, I am kind of new to the Java and displaytag library. Can anyone here point out what I did wrong?
Thanks,
I put this same code into a test project that I use and it worked fine for me. Are you sure that your re-compiled decorator class is being deployed into your servlet container?
Hi,
I use Tomcat 5.59 and myeclipseide plug-in with Eclipse for this project. The class file appears to be deployed properly. I am still getting the following error message:
Exception: [.LookupUtil] Error looking up property "groupFiles" in object type "org.displaytag.customize.Wrapper". Cause: null
org.displaytag.util.LookupUtil.getBeanProperty(LookupUtil.java:220)
org.displaytag.model.Column.getValue(Column.java:105)
org.displaytag.model.Column.createChoppedAndLinkedValue(Column.java:162)
org.displaytag.model.Column.getOpenTag(Column.java:138)
org.displaytag.tags.TableTag.writeTableBody(TableTag.java:1645)
org.displaytag.tags.TableTag.writeHTMLData(TableTag.java:1418)
org.displaytag.tags.TableTag.doEndTag(TableTag.java:1039)
org.apache.jsp.cur_jsp._jspx_meth_display_table_0(org.apache.jsp.cur_jsp:856)
org.apache.jsp.cur_jsp._jspx_meth_c_when_5(org.apache.jsp.cur_jsp:801)
org.apache.jsp.cur_jsp._jspx_meth_c_choose_3(org.apache.jsp.cur_jsp:766)
org.apache.jsp.cur_jsp._jspService(org.apache.jsp.cur_jsp:245)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:322)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:291)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
Thanks,
This is the same environment that I am using. Can you set a breakpoint on your decorator class in the constructor so you can see if it is being called correctly?
I ran into a very similar problem and here is the solution I stumbled upon:
If the name of the structure you store your data in is named "incorrectly" the decorator will fail with the error message you saw.
--- Example ---
Will Fail:
public String getFoo() {
BODData bd = (BODData) this.getCurrentRowObject();
...
return results;
}
Will Work:
public String getFoo() {
BoData bd = (BoData) this.getCurrentRowObject();
...
return results;
}
--- End Example ---
Note that the only change was to rename "BODData" to "BoData".
It also appears that if the decorator is "incorrectly named" the getter cannot be found. In the example below, the field called "foo", normally mapped to "getFoo()" will not be found, as it will look for "getfoo()" -- violating the spec. I believe this error is due to BeanUtils, but don't have time to track it down.
--- Example ---
Will Fail:
public class DecoratorBODList extends TableDecorator {
public String getFoo() {
...
}
...
}
Will Work:
public class DecoratorBoList extends TableDecorator {
public String getFoo() {
...
}
...
}
--- End Example ---
My previous post looks kind of weird with utf-8 encoding. I am reposting the error message with ISO-8859-1 encoding enabled on my browser.
Exception: [.LookupUtil] Error looking up property "groupFiles" in object type "org.displaytag.customize.Wrapper". Cause: null
org.displaytag.util.LookupUtil.getBeanProperty(LookupUtil.java:220)
org.displaytag.model.Column.getValue(Column.java:105)
org.displaytag.model.Column.createChoppedAndLinkedValue(Column.java:162)
org.displaytag.model.Column.getOpenTag(Column.java:138)
org.displaytag.tags.TableTag.writeTableBody(TableTag.java:1645)
org.displaytag.tags.TableTag.writeHTMLData(TableTag.java:1418)
org.displaytag.tags.TableTag.doEndTag(TableTag.java:1039)
org.apache.jsp.cur_jsp._jspx_meth_display_table_0(org.apache.jsp.cur_jsp:856)
org.apache.jsp.cur_jsp._jspx_meth_c_when_5(org.apache.jsp.cur_jsp:801)
org.apache.jsp.cur_jsp._jspx_meth_c_choose_3(org.apache.jsp.cur_jsp:766)
org.apache.jsp.cur_jsp._jspService(org.apache.jsp.cur_jsp:245)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:322)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:291)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)