My problem is that I had a convenience function in the action form

    public void setCashflowLimit( UserCashflowLimit limit )
    {
      System.out.println( "AACF.setCashflowLimit("+ccyCode+", "+limit+")");
      mapLimits.put( limit.getCcyCode(), limit );
    }

My `UserCashflowLimit' bean also has a "ccyCode" attribute. So I added
the convenience method in the "Action" controller. Once I remove
this convenience method above and recode the long form. Everything
started wrong and the form suddenly populates the nested cashflow limits
beans.

I think the Java Beans Introspector blew up trying to figure out the correct "write" 
method.

DAMN!

This is is confusing. There must be an easier way to debug this, apart attacking the 
problem
from lots of "<bean:write>" tags.

For future reference mapped properties have the form

         public    {XYZ}     get{AttributeName}( String key ) {  .... }

         public    void        set{ AttributeName}( String key,   {XYZ} value ) {  
.... }

--
Peter Pilgrim                       ++44 (0)207-545-9923

............................................ Swamped under electronic mails


---------------------------------------- Message History 
----------------------------------------


From:  Peter Pilgrim/DMGIT/DMG UK/DeuBa@DMG UK on 05/04/2002 10:16 CET

Please respond to "Struts Users Mailing List" <[EMAIL PROTECTED]>

To:    "Struts Users Mailing List" <[EMAIL PROTECTED]>
cc:
Subject:    Re: RequestUtils.populate ( BeanUtils.populate)




Hi

This is the real deal this time. This is the real code extract
instead of something made up.

==================

public class AccountAdminControllerForm extends ActionForm ...
{
    /** Map of currency codes to user cashflow limit objects */
    private Map         mapLimits = new TreeMap();

    public UserCashflowLimit getCashflowLimit( String ccyCode )
    {
      System.out.println( "AACF.getCashflowLimit("+ccyCode+")");
      return (UserCashflowLimit) mapLimits.get( ccyCode );
    }

    public void setCashflowLimit( String ccyCode, UserCashflowLimit limit )
    {
      System.out.println( "AACF.setCashflowLimit("+ccyCode+", "+limit+")");
      mapLimits.put( ccyCode, limit );
    }

    ...
}


public class UserCashflowLimit {

    private BigDecimal  cashflowAmount=null;
    private String      amountText = null;

    public BigDecimal getCashflowAmount()
    {        return cashflowAmount;  }

    public void setCashflowAmount( BigDecimal cashflowAmount )
    {        this.cashflowAmount = cashflowAmount;  }

    public String getAmount()
    {        return amountText  }

    public void setAmount( String amountText )
    {
        System.out.println( "UCL.setAmount("+amountText+")" );
        this.amountText = StringUtil.notNull(amountText);
    }

    ...
}


Here is the real JSP code



<html:form action="/AccountAdminController.do" method="POST" >

...

<html:text property="cashflowLimit(USD).amountText" >
   <bean:write name="accountAdminControllerForm"
               property="cashflowLimit(USD).cashflowAmount" />
</html:text>

...

</html:form>

==================

I am still have problems with the actual signature. This is what the Javadoc for
`PropertyUtils' has to say

 * <li><strong>Mapped (<code>name(key)</code>)</strong> - The JavaBean
 *     is assumed to have an property getter and setter methods with an
 *     additional attribute of type <code>java.lang.String</code>.</li>

Does this mean the `PropertyUtils' only supports property values that are
`java.lang.String' types?

public String getSomeAttribute( String key )
pubic void setSomeAttribute( String key, String values )

I know the property key have to be `java.lang.String' ?

--
Peter Pilgrim                       ++44 (0)207-545-9923

............................................ Swamped under electronic mails


--<CUT>--


--

This e-mail may contain confidential and/or privileged information. If you are not the 
intended recipient (or have received this e-mail in error) please notify the sender 
immediately and destroy this e-mail. Any unauthorized copying, disclosure or 
distribution of the material in this e-mail is strictly forbidden.



--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to