tomcat-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Cindy Ballreich <ci...@ballreich.net>
Subject RE: Custom Tag / JavaBean question
Date Tue, 15 Oct 2002 18:48:42 GMT
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:cindy@ballreich.net] 
>> Sent: Tuesday, October 15, 2002 1:13 PM
>> To: tomcat-user@jakarta.apache.org
>> 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-> unsubscribe@jakarta.apache.org>
>> For 
>> additional commands, 
>> e-mail: <mailto:tomcat-user-help@jakarta.apache.org>
>> 
>> 
>
>--
>To unsubscribe, e-mail:   <mailto:tomcat-user-unsubscribe@jakarta.apache.org>
>For additional commands, e-mail: <mailto:tomcat-user-help@jakarta.apache.org>
>

--
To unsubscribe, e-mail:   <mailto:tomcat-user-unsubscribe@jakarta.apache.org>
For additional commands, e-mail: <mailto:tomcat-user-help@jakarta.apache.org>


Mime
View raw message