This is great! It's exactly the information I needed. Thanks! At 01:57 PM 10/15/02 -0400, Tim Moore wrote: >The problem lies in the fact that you've overloaded the setter method >for accessList. According to the JavaBeans spec, you can't do that; >only one setter per property name is supported. So, first of all, >you'll need to give the attributes two different names and make them >both optional. > >For example: > >public void setAccessList(Collection accessList) { > this.accessList = accessList; >} > >public void setAccessListName(String accessListName) {...} > >But what's more, because of the way tag pooling works, you probably >don't want to resolve the name in the setter method as you do below (see >http://jakarta.apache.org/taglibs/guidelines.html) so you should have an >accessListName field too, and write setAccessListName just like: > >public void setAccessListName(String accessListName) { > this.accessListName = accessListName; >} > >then, in doStartTag: > >Collection accessList = this.accessList; >if (accessList == null) { > accessList = (Collection) pageContext.findAttribute(accessListName); >} > >Kind of a pain, but that's the only way to be fully compliant with the >spec. >-- >Tim Moore / Blackboard Inc. / Software Engineer >1899 L Street, NW / 5th Floor / Washington, DC 20036 >Phone 202-463-4860 ext. 258 / Fax 202-463-4863 > > >> -----Original Message----- >> From: Cindy Ballreich [mailto:[EMAIL PROTECTED]] >> Sent: Tuesday, October 15, 2002 1:13 PM >> To: [EMAIL PROTECTED] >> Subject: Custom Tag / JavaBean question >> >> >> >> I have a custom tag that takes a collection as one of it's >> parameters. I'd like to be able to give the name of an >> attribute (a String) as the value and have the tag find the >> attribute from the pageContext. This doesn't seem like it >> should be too difficult. I have setters that look like this >> in my tag... >> >> protected Collection accessList; >> >> public void setAccessList(String accessList) { >> Object o = pageContext.findAttribute(accessList); >> if (o instanceof Collection) { >> this.accessList = (Collection)o; >> } >> } >> >> public void setAccessList(Collection accessList) { >> this.accessList = accessList; >> } >> >> ...and the tag looks like this on the jsp page... >> >> <jsp:useBean id="accessList" scope="request" >> class="java.util.Vector" /> >> <mpi:accessList id="access" accessList="accessList" ... > >> ... >> </mpi:accessList> >> >> ... but I keep getting errors like this... >> >> org.apache.jasper.JasperException: Unable to convert string >> 'accessList' to class java.util.Collection for attribute >> accessList: java.lang.IllegalArgumentException: Property >> Editor not registered with the PropertyEditorManager >> at >> org.apache.jasper.runtime.JspRuntimeLibrary.getValueFromProper >> tyEditorManager(JspRuntimeLibrary.java:749) >> >> If I use a run time value in the tag I don't get the error... >> >> <jsp:useBean id="accessList" scope="request" >> class="java.util.Vector" /> >> <mpi:accessList id="access" accessList='<%= accessList %> ... > >> ... >> </mpi:accessList> >> >> So I have a workaround for the problem, but I'd still like to >> understand why the first example doesn't work when everything >> I've read says that it should. >> >> I'm using Tomcat 4.1.12 on NT 4.0 (development server) with >> j2sdk1.4.0_01. >> >> Thanks >> >> Cindy >> >> >> >> -- >> To unsubscribe, e-mail: >> <mailto:tomcat-user-> [EMAIL PROTECTED]> >> For >> additional commands, >> e-mail: <mailto:[EMAIL PROTECTED]> >> >> > >-- >To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> >For additional commands, e-mail: <mailto:[EMAIL PROTECTED]> >
-- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>