Oliver Suciu wrote:
> You're saying that the spec doesn't say anything about this;
> how comes you then say that the behavior of Tomcat is the
> correct one?...
I'm saying that the bean spec does not explicitly say that
a property can not have multiple setter methods, nor that it
can have it. When the spec text is vague, you must look at
the API and the implementation of the bean classes to find
out what to expect. Together they imply that a bean property
can only be associated with one setter method. Look, for
instance, at the java.beans.PropertyDescriptor class. The
constructors allow you to set *one* setter method, and the
getWriteMethod() returns *one* method.
The bean spec group is aware of this and have indicated to me
that the next rev of the spec will explicitly state this as
well.
Hans
> Hans Bergsten wrote:
>
>>Oliver Suciu wrote:
>>
>>
>>>Hi,
>>>
>>>Can anybody help clarify how a JSP container should handle
>>>overloaded setters in a custom tag:
>>>
>>> public void setData(List dataList) {
>>> this.dataList = dataList;
>>> }
>>> public void setData(Object dataObj) {
>>> this.dataObj = dataObj;
>>> }
>>> public void setData(String dataStr) {
>>> this.dataStr = dataStr;
>>> }
>>>
>>>We want to give the JSP author the convenience of passing data
>>>to a tag using different types, whichever comes in more handy.
>>>The data would be of the same "logical" kind, that's why, ideally,
>>>the setters would bear the same name, just like overloaded methods
>>>in Java.
>>>
>>>As an example, JRun 3.1 accepts the code above, whereas Tomcat
>>>3.2.3 throws a CompileException ("Unable to convert a String
>>>to java.util.List").
>>>
>>>What's the correct behavior?
>>>
>>Tomcat's behavior is correct. When it comes to attribute setter
>>methods, a tag handler class is a "bean", so you must go to the
>>bean spec to see how it deals with property setter methods.
>>The spec text itself doesn't say anything about multiple setter
>>methods, but the implementation of the methods that deal with
>>setter methods only allow one setter method per property. Hence,
>>multiple setter methods for a tag handler attribute is not
>>allowed.
>>
>>In JSP 1.2 you can get around this by making the type of the
>>attribute Object, and the figure out which specific type you
>>got. The reason this only works well with JSP 1.2 is that
>>JSP 1.1 doesn't accept a string literal as the attribute
>>value for an attribute of type Object; JSP 1.2 does.
>>
>> public void setData(Object data) {
>> this.data = data;
>> }
>>
>> public int doStartTag() {
>> if (data instanceof List) {
>> // Work with it as a List
>> }
>> else (data.getClass().isArray()) {
>> // Work with it as an array
>> }
>> else (data instanceof String) {
>> // Work with as a String
>> }
>> else ...
>> }
>>
>>I describe this in more detail in an article that will soon
>>be published at the O'Reilly site. I'll post the URL here
>>when it's available.
>>
>>Hans
>>--
>>Hans Bergsten [EMAIL PROTECTED]
>>Gefion Software http://www.gefionsoftware.com
>>Author of JavaServer Pages (O'Reilly), http://TheJSPBook.com
>>
>>===========================================================================
>>To unsubscribe: mailto [EMAIL PROTECTED] with body: "signoff JSP-INTEREST".
>>For digest: mailto [EMAIL PROTECTED] with body: "set JSP-INTEREST DIGEST".
>>Some relevant FAQs on JSP/Servlets can be found at:
>>
>> http://java.sun.com/products/jsp/faq.html
>> http://www.esperanto.org.nz/jsp/jspfaq.html
>> http://www.jguru.com/jguru/faq/faqpage.jsp?name=JSP
>> http://www.jguru.com/jguru/faq/faqpage.jsp?name=Servlets
>>
>
> ===========================================================================
> To unsubscribe: mailto [EMAIL PROTECTED] with body: "signoff JSP-INTEREST".
> For digest: mailto [EMAIL PROTECTED] with body: "set JSP-INTEREST DIGEST".
> Some relevant FAQs on JSP/Servlets can be found at:
>
> http://java.sun.com/products/jsp/faq.html
> http://www.esperanto.org.nz/jsp/jspfaq.html
> http://www.jguru.com/jguru/faq/faqpage.jsp?name=JSP
> http://www.jguru.com/jguru/faq/faqpage.jsp?name=Servlets
>
>
--
Hans Bergsten [EMAIL PROTECTED]
Gefion Software http://www.gefionsoftware.com
Author of JavaServer Pages (O'Reilly), http://TheJSPBook.com
===========================================================================
To unsubscribe: mailto [EMAIL PROTECTED] with body: "signoff JSP-INTEREST".
For digest: mailto [EMAIL PROTECTED] with body: "set JSP-INTEREST DIGEST".
Some relevant FAQs on JSP/Servlets can be found at:
http://java.sun.com/products/jsp/faq.html
http://www.esperanto.org.nz/jsp/jspfaq.html
http://www.jguru.com/jguru/faq/faqpage.jsp?name=JSP
http://www.jguru.com/jguru/faq/faqpage.jsp?name=Servlets