You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tapestry.apache.org by Random Tapestry User <ta...@comcast.net> on 2005/05/03 04:30:41 UTC

Still having errors : Re: Shared beans ?

Hmmm.

Thanks Erik.

I defined a method in my base class with a getter for getting a 
ValidationDelegate, and loading the page no longer throws an error.
However, when I submit the form, and the validation is triggered, an 
runtime exception is thrown "Component InvestorEditor does not define a 
bean name delegate." The stack trace shows tapestry is looking to the 
bean provider to provide a delegate bean.

Here's my page spec

<?xml version="1.0"?>
<!DOCTYPE page-specification PUBLIC
  "-//Apache Software Foundation//Tapestry Specification 3.0//EN"
  "http://jakarta.apache.org/tapestry/dtd/Tapestry_3_0.dtd">
<page-specification 
class="com.ughm.app.view.tapestry.pages.entities.users.investor.InvestorEditorPage">

    <property-specification name="editUser"
        type="com.ughm.entities.users.Investor"
        persistent="no"/>

        <bean name="required"
        class="org.apache.tapestry.valid.StringValidator"
        lifecycle="page">
        <set-property name="required" expression="true"/>
    </bean>

    <component id="editForm" type="Form">
        <binding name="listener" expression="listeners.formSubmit" />
        <binding name="delegate" expression="investorDelegate" />
    </component>  
</page-specification>

Note I have an accessor expression "investorDelegate" that should 
resolve to the following method on the base class :
 public InvestorUserDelegate getInvestorDelegate()
  {  
    return new InvestorUserDelegate();
  }

Not sure what I'm doing wrong, but it appears Tapestry is expecting a 
bean to be found for the delegate binding.

??

Thanks for any help here !

tappapp

Erik Hatcher wrote:

> You don't need to use <bean> to define these things.  You can simply 
> return an IValidator and ValidationDelegate from anywhere you like.  
> I've often used a base page class with getters for this purpose.
>
>     Erik
>
> On Apr 30, 2005, at 4:23 PM, Random Tapestry User wrote:
>
>> Hey all,
>>
>> I think I'm missing something simple. I've read the book, but not 
>> sure if I came across how to do this, or wasn't sure what I was 
>> looking at if I did.
>>
>> I have a number of pages, that use the same component.
>>
>> Here's what I have.
>>
>> I have a user registration page, "RegisterUser.page", with a first 
>> and last name component, and html template, named 
>> "UserNameElements.jwc", and "UserNameElements.html".
>> I also have a user update page, "EditUser.page" which uses the same 
>> "UserNameElements.jwc" component.
>>
>> The first and last name, are required elements in the 
>> "UserNameElements.jwc", however, I find I'm having to define the 
>> "required" bean, and my form "delegate" bean in both the 
>> "RegisterUser.page" and in the "EditUser.page".
>>
>> Since only the "UserNameElements.jwc" use the "required" and 
>> "delegate" beans (in this simple example), isn't there somewhere I 
>> can define those, perhaps in the "UserNameElements.jwc" ?
>>
>> Thanks all,
>> tappapp
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: tapestry-user-unsubscribe@jakarta.apache.org
>> For additional commands, e-mail: tapestry-user-help@jakarta.apache.org
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: tapestry-user-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: tapestry-user-help@jakarta.apache.org
>
>


---------------------------------------------------------------------
To unsubscribe, e-mail: tapestry-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tapestry-user-help@jakarta.apache.org


Re: Still having errors : Re: Shared beans ?

Posted by Erik Hatcher <er...@ehatchersolutions.com>.
On May 2, 2005, at 10:30 PM, Random Tapestry User wrote:

> Hmmm.
>
> Thanks Erik.
>
> I defined a method in my base class with a getter for getting a  
> ValidationDelegate, and loading the page no longer throws an error.
> However, when I submit the form, and the validation is triggered,  
> an runtime exception is thrown "Component InvestorEditor does not  
> define a bean name delegate." The stack trace shows tapestry is  
> looking to the bean provider to provide a delegate bean.

I don't see the error in what you've done, sorry.  Somewhere you must  
have a dangling reference to beans.delegate, is my guess.

>
> Here's my page spec
>
> <?xml version="1.0"?>
> <!DOCTYPE page-specification PUBLIC
>  "-//Apache Software Foundation//Tapestry Specification 3.0//EN"
>  "http://jakarta.apache.org/tapestry/dtd/Tapestry_3_0.dtd">
> <page-specification  
> class="com.ughm.app.view.tapestry.pages.entities.users.investor.Invest 
> orEditorPage">
>
>    <property-specification name="editUser"
>        type="com.ughm.entities.users.Investor"
>        persistent="no"/>
>
>        <bean name="required"
>        class="org.apache.tapestry.valid.StringValidator"
>        lifecycle="page">
>        <set-property name="required" expression="true"/>
>    </bean>

You can do the same trick for StringValidator as well, so you don't  
need a <bean> for it.

>    <component id="editForm" type="Form">
>        <binding name="listener" expression="listeners.formSubmit" />
>        <binding name="delegate" expression="investorDelegate" />
>    </component>  </page-specification>
>
> Note I have an accessor expression "investorDelegate" that should  
> resolve to the following method on the base class :
> public InvestorUserDelegate getInvestorDelegate()
>  {     return new InvestorUserDelegate();
>  }

I would recommend you use an instance variable for the delegate and  
any other objects created like this.  And clear them in an initialize 
() method.

>
> Not sure what I'm doing wrong, but it appears Tapestry is expecting  
> a bean to be found for the delegate binding.
>
> ??
>
> Thanks for any help here !
>
> tappapp
>
> Erik Hatcher wrote:
>
>
>> You don't need to use <bean> to define these things.  You can  
>> simply return an IValidator and ValidationDelegate from anywhere  
>> you like.  I've often used a base page class with getters for this  
>> purpose.
>>
>>     Erik
>>
>> On Apr 30, 2005, at 4:23 PM, Random Tapestry User wrote:
>>
>>
>>> Hey all,
>>>
>>> I think I'm missing something simple. I've read the book, but not  
>>> sure if I came across how to do this, or wasn't sure what I was  
>>> looking at if I did.
>>>
>>> I have a number of pages, that use the same component.
>>>
>>> Here's what I have.
>>>
>>> I have a user registration page, "RegisterUser.page", with a  
>>> first and last name component, and html template, named  
>>> "UserNameElements.jwc", and "UserNameElements.html".
>>> I also have a user update page, "EditUser.page" which uses the  
>>> same "UserNameElements.jwc" component.
>>>
>>> The first and last name, are required elements in the  
>>> "UserNameElements.jwc", however, I find I'm having to define the  
>>> "required" bean, and my form "delegate" bean in both the  
>>> "RegisterUser.page" and in the "EditUser.page".
>>>
>>> Since only the "UserNameElements.jwc" use the "required" and  
>>> "delegate" beans (in this simple example), isn't there somewhere  
>>> I can define those, perhaps in the "UserNameElements.jwc" ?
>>>
>>> Thanks all,
>>> tappapp
>>>
>>> -------------------------------------------------------------------- 
>>> -
>>> To unsubscribe, e-mail: tapestry-user-unsubscribe@jakarta.apache.org
>>> For additional commands, e-mail: tapestry-user- 
>>> help@jakarta.apache.org
>>>
>>
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: tapestry-user-unsubscribe@jakarta.apache.org
>> For additional commands, e-mail: tapestry-user- 
>> help@jakarta.apache.org
>>
>>
>>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: tapestry-user-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: tapestry-user-help@jakarta.apache.org
>


---------------------------------------------------------------------
To unsubscribe, e-mail: tapestry-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tapestry-user-help@jakarta.apache.org