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]>