Angelo,

Following are the very trimmed down versions of my template and page
class. It shows the delegate and blocks, and how the block to render is
determined. I didn't want to use a traditional page return for a few
reasons: 1) Displaying a simple result message doesn't really need a
full page. 2) This process will probably end up being ajax, which will
probably mean I'll need the blocks anyway (unless I use a different ajax
method).

So anyway, here it is:


Info.tml

<div xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd";
    t:type="layouts/general">

    <t:delegate to="content" />

    <t:block id="infoRequest">
        <div t:type="form" t:id="infoRequest">
         <!-- ... form details ... -->
        </form>
    </t:block>

    <t:block id="messageSent">Thanks!</t:block>
</div>


Info.java

public class Info {
   
    @Persist("flash")
    private Block content;
   
    @Inject
    private Block messageSent;
   
    @Inject
    private Block infoRequest;

    void onActivate() {
        if(content == null)
            content = infoRequest;
    }

    void onSuccessFromInfoRequest() {
       //Process form - update/save/create entity, send email, etc.

       //Set our content block to the messageSent block.
        content = messageSent;
    }
   
    public Block getContent() {
        return content;
    }

}


chris

Angelo Chen wrote:
> hi cris,
>
> sounds interesting, how about a sample code/template to let us understand
> more? thanks.
>
> angelo
>
>
> Chris Lewis-5 wrote:
>   
>> Hello all,
>>
>> I'm wondering how others handle a simple flow where a user fills out a
>> form, form is processed, and then a message is shown as a result ("ok"
>> or "failed"). I have a simple contact form and am handling this like so:
>>
>> In my template I have 2 blocks: 1 is the form and the other is the
>> message (or a place holder). There is also a t:delegate that will render
>> the page property "content", which is just another block that will be
>> assigned the form or message block.
>>
>> Now because I have 2 different possible "bodies" (the blocks), I have to
>> have some logic to make sure the correct one gets displayed. So my the
>> page's content property is annotated as @Persist("flash"), and at the
>> end of the form submission I set the content member to a message. It's
>> persisted, so that works. To get the initial content (the form) to
>> render, I check if the content property is null in onActivate, and if so
>> assign the form block.
>>
>> It works nicely, and I was wondering how others were handling this
>> common use case and if something stinks about my method.
>>
>> Thanks!
>>
>> chris
>>
>> -- 
>> http://thegodcode.net
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>> For additional commands, e-mail: [EMAIL PROTECTED]
>>
>>
>>
>>     
>
>   

-- 
http://thegodcode.net

Reply via email to