OK -- so it's underspecified. That means that the JRun implementation is just as correct or incorrect as Tomcat's...
BTW, there seems to be a simple (JSP- and Tomcat-compliant) way to make use of overloaded setters -- use request-time expressions: modify: <tag setData='string'> to: <tag setData='<%="string"%>'> This bypasses any conversion and correctly invokes the string setter 'public void setData(String dataStr)'. -- Oliver Hans Bergsten wrote: > > 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 =========================================================================== 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