PropertyEditor support


Classes Modified

Compiler

TagBeginGenerator

TagCache

JspRuntimeLibrary


Some Details and Issues

Subject: [JSP] Conversion of property value
   Date: Mon, 25 Sep 2000 17:08:47 -0700
   From: Pierre Delisle 
     To: jsr-053-experts@eng.sun.com

I'm currently working at implementing the new JSP1.2 feature for the
support of PropertyEditors in Tomcat-4.0.

The 'conversion' algorithm
(converts the property value so that it matches the setter
method of the bean property) has been implemented as
follows:

-----
This 'conversion' algorithm applies for
<jsp:setProperty> as well as for attribute values 
of custom tags.

1. if 'value' is an 'rtexpr'
       no conversion applied

2. else if a PropertyEditor class is defined for the property
       conversion is performed via the combination of
           'PropertyEditor.setAsText(value)' and 
           'PropertyEditor.getValue()'.
       IllegalArgumentException may be thrown.

3. else if 'setterMethodParamType' is 'String'
       No conversion performed

4. else if 'setterMethodParamType' is a primitive type,
       Conversions specified in table 4-2 of the spec are 
       applied.

     [*** please note that 'short/'Short' is missing
      *** from table 4-2.
      *** Also, java.lang.Character.valueOf(String)
      *** does not exist]
       
5. else 
       At runtime, try to get a PropertyEditor from the 
       PropertyEditorManager.
       5.1 if one exists, perform same conversion as in 2.
       5.2 else throw an Exception

-----
One pending issue is what should happen if the
setterMethodParamType is 'Object'.

Should we change rule 3 so that it reads:

3. else if 'setterMethodParamType' is 'String' or 
           'setterMethodParamType' is Object:
       No conversion

Since 'String' is an 'Object', it can be argued (as has been the case 
on tomcat-dev) that it should be passed 'as is' to the setter method.

Should it?

       -- Pierre