You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@myfaces.apache.org by Stephen Friedrich <tr...@eekboom.com> on 2008/05/24 00:28:26 UTC

How to PPR-enable a facelet component?

I have some very specific components in my project, made using facelets
and containing mostly pure html (with some ui:repeat thrown in).

How am I supposed to make such a component the target of PPR?

Why isn't there a simple non-rendering trinidad component for that purpose, e.g.

    <tr:fragment partialTriggers="region">
        ... html ...
    </tr:fragment>

That component could also have a rendered attribute which is nicer than
using <c:if> (and avoids confusing facelets).

Is there any other component that I could misuse for that?


Re: How to PPR-enable a facelet component?

Posted by Hazem Saleh <ha...@gmail.com>.
Hi Stephen,

This is not an arrogant philosophy.
It is simply not designed for this.
IMO, Ajax4JSF can help you.

Please check these articles :
http://www.javabeat.net/articles/19-introduction-to-ajax4jsf-1.html
http://www.jroller.com/HazemBlog/entry/the_magic_of_ajax4jsf

Good Luck.

On Sat, May 24, 2008 at 1:50 AM, Stephen Friedrich <tr...@eekboom.com>
wrote:

> Too bad - and a strange (or arrogant) philosophy.
> If there aren't any technical issues I haven't yet understood, I think
> such a feature/tag should be included.
> Why be so inflexible and malignant considering other technologies?
>
> Trinidad: All your html are belong to us?
>
> That might perhaps have been an Oracle strategy, but it doesn't suite an
> Open Source project that well.
>
> My app does indeed use mostly Trinidad components.
> PPR is a great feature and time saver.
> I would not want to do without panelFormLayout.
> Lighweight dialogs are desperately needed.
>
> There are just a few cases where a couple of lines of html plus
> some css saves me from creating custom renderers or jsf components
> (like a highly creative process train (think "advertising agency
> employee with a faible for photoshop")).
>
>
>
> Scott O'Bryan wrote:
>
>> The reason is one of philosophy.  And there has been some debate over this
>> on the dev lists.  I think Andrew has something which may be thrown into the
>> sandbox..  however..
>>
>> Trindiad renderkit works off the assumption that most of your content will
>> be trinidad content.  As such, it has PPR built in to each component and the
>> famework necessary to support that PPR.  Components external to Trinidad are
>> assumed to be able to do their own PPR and that is where the philosophy
>> comes in.  Trinidad does not try to PPR the world, it only tries to ppr
>> itself so it can better optimize.
>>
>> Some renderkits (like A4J) take the opposite approach and basically look
>> at adding AJAX functionality to existing non-ppr enabled renterkits/content.
>>  Maybe you would be better off using a technology like that instead of
>> Trinidad for your application.
>>
>> Scott
>>
>> Stephen Friedrich wrote:
>>
>>> I have some very specific components in my project, made using facelets
>>> and containing mostly pure html (with some ui:repeat thrown in).
>>>
>>> How am I supposed to make such a component the target of PPR?
>>>
>>> Why isn't there a simple non-rendering trinidad component for that
>>> purpose, e.g.
>>>
>>>   <tr:fragment partialTriggers="region">
>>>       ... html ...
>>>   </tr:fragment>
>>>
>>> That component could also have a rendered attribute which is nicer than
>>> using <c:if> (and avoids confusing facelets).
>>>
>>> Is there any other component that I could misuse for that?
>>>
>>>
>>
>


-- 
Hazem Ahmed Saleh Ahmed
http://www.jroller.com/page/HazemBlog

Re: How to PPR-enable a facelet component?

Posted by Scott O'Bryan <da...@gmail.com>.
Yeah,  and like I say,  maybe one of the simpler trinidad panels will  
do what you need.

On May 24, 2008, at 1:44 AM, Stephen Friedrich <tr...@eekboom.com>  
wrote:

> I really don't meant my statement to be personal at all.
> It was more a general comment on Trinidad.
> I apologize if it sounded differently.
>
> I hesitate a lot to bring A4J into my app, because my experience is  
> that
> each new technology in the stack is good for a couple of days of  
> configuration
> and debugging nightmare.
>
> There was an article about how to enable PPR for custom (non-JSF)  
> components.
> I'll try and do that with a component that simply renders a <div>.
>
> Thanks for your comments.
>
> Scott O'Bryan wrote:
>> No need to get personal, I'm just telling you about what philosophy  
>> Trinidad has origionally taken.  The idea does have some technical  
>> merit.  It is very difficult to optimize/ppr content you don't  
>> own.  ESPECIALLY if such content is JSF content.  Trinidad didn't  
>> want to have to tackles the issues involved technically.
>> It's not arrogance, simply that Trinidad wasn't written to be an  
>> AJAX enablement engine as much as a rich-type renderkit which  
>> extends JSF to do a complete GUI.
>> I'm also not saying that your ideas don't have merit, and your  
>> certainly welcome to argue them on the community forums here, but  
>> try to be more constructive.
>> My suggestion about A4J was just that.  A4J does things on the PPR  
>> front differently then Trinidad does.  It does this specifically  
>> because it IS an AJAX enablement engine, but not as much a  
>> application development renderkit like Trinidad is.  Each  
>> architecture has merit and I'm not sure there is a one-size-fits- 
>> all scenario to this issue.
>> BTW- putting content inside of a panel that has a partial trigger  
>> will get the behavior you want in facelets I believe.  I haven't  
>> tried it myself, and it doesn't work with JSP's so long as you rely  
>> on JSTL, but I think facelets might actually fix that issue.
>> Scott
>> Stephen Friedrich wrote:
>>> Too bad - and a strange (or arrogant) philosophy.
>>> If there aren't any technical issues I haven't yet understood, I  
>>> think
>>> such a feature/tag should be included.
>>> Why be so inflexible and malignant considering other technologies?
>>>
>>> Trinidad: All your html are belong to us?
>>>
>>> That might perhaps have been an Oracle strategy, but it doesn't  
>>> suite an
>>> Open Source project that well.
>>>
>>> My app does indeed use mostly Trinidad components.
>>> PPR is a great feature and time saver.
>>> I would not want to do without panelFormLayout.
>>> Lighweight dialogs are desperately needed.
>>>
>>> There are just a few cases where a couple of lines of html plus
>>> some css saves me from creating custom renderers or jsf components
>>> (like a highly creative process train (think "advertising agency
>>> employee with a faible for photoshop")).
>>>
>>>
>>> Scott O'Bryan wrote:
>>>> The reason is one of philosophy.  And there has been some debate  
>>>> over this on the dev lists.  I think Andrew has something which  
>>>> may be thrown into the sandbox..  however..
>>>>
>>>> Trindiad renderkit works off the assumption that most of your  
>>>> content will be trinidad content.  As such, it has PPR built in  
>>>> to each component and the famework necessary to support that  
>>>> PPR.  Components external to Trinidad are assumed to be able to  
>>>> do their own PPR and that is where the philosophy comes in.   
>>>> Trinidad does not try to PPR the world, it only tries to ppr  
>>>> itself so it can better optimize.
>>>>
>>>> Some renderkits (like A4J) take the opposite approach and  
>>>> basically look at adding AJAX functionality to existing non-ppr  
>>>> enabled renterkits/content.  Maybe you would be better off using  
>>>> a technology like that instead of Trinidad for your application.
>>>>
>>>> Scott
>>>>
>>>> Stephen Friedrich wrote:
>>>>> I have some very specific components in my project, made using  
>>>>> facelets
>>>>> and containing mostly pure html (with some ui:repeat thrown in).
>>>>>
>>>>> How am I supposed to make such a component the target of PPR?
>>>>>
>>>>> Why isn't there a simple non-rendering trinidad component for  
>>>>> that purpose, e.g.
>>>>>
>>>>>   <tr:fragment partialTriggers="region">
>>>>>       ... html ...
>>>>>   </tr:fragment>
>>>>>
>>>>> That component could also have a rendered attribute which is  
>>>>> nicer than
>>>>> using <c:if> (and avoids confusing facelets).
>>>>>
>>>>> Is there any other component that I could misuse for that?
>>>>>
>>>>
>>>
>

Re: How to PPR-enable a facelet component?

Posted by Andrew Robinson <an...@gmail.com>.
Just a quick reply from my iPod:
1) don't use a4j if you don't have to. Mixing external Ajax code with
Trinidad is not recommended.
2) Use tr:panelGroupLayout to get PPR to work with as little HTML
possible (although it uses a SPAN instead of a DIV for the default
layout which sucks.

You need to have some HTML to be able to PPR as PPR is just that --
partial page refreshing/ replacing. You can acually PPR any component
as long as you know the client ID. It does not work on plain HTML tags
though (verbatim or in-line facelets). If you don't want to use
tr:panelGroupLayout the I would suggest making a custom component that
renders the root HTML tag that you desire.

As for Trinidad not being more declarative, I keep losing this battle.
There are a few people who would prefer to not support 3rd party
components at all and prefer that people use 100% trinidad. Others
don't want new PPR components, they feel that only renderkit oriented
components belong in Trinidad. I share neither of these views.
Trinidad is not just a renderkit, it is a full framework IMO. If you
agree with that as well, users need to ask for this functionality as
only popular opinion can win this debate.

-Andrew

On 5/24/08, Stephen Friedrich <tr...@eekboom.com> wrote:
> I really don't meant my statement to be personal at all.
> It was more a general comment on Trinidad.
> I apologize if it sounded differently.
>
> I hesitate a lot to bring A4J into my app, because my experience is that
> each new technology in the stack is good for a couple of days of
> configuration
> and debugging nightmare.
>
> There was an article about how to enable PPR for custom (non-JSF)
> components.
> I'll try and do that with a component that simply renders a <div>.
>
> Thanks for your comments.
>
> Scott O'Bryan wrote:
>> No need to get personal, I'm just telling you about what philosophy
>> Trinidad has origionally taken.  The idea does have some technical
>> merit.  It is very difficult to optimize/ppr content you don't own.
>> ESPECIALLY if such content is JSF content.  Trinidad didn't want to have
>> to tackles the issues involved technically.
>> It's not arrogance, simply that Trinidad wasn't written to be an AJAX
>> enablement engine as much as a rich-type renderkit which extends JSF to
>> do a complete GUI.
>>
>> I'm also not saying that your ideas don't have merit, and your certainly
>> welcome to argue them on the community forums here, but try to be more
>> constructive.
>>
>> My suggestion about A4J was just that.  A4J does things on the PPR front
>> differently then Trinidad does.  It does this specifically because it IS
>> an AJAX enablement engine, but not as much a application development
>> renderkit like Trinidad is.  Each architecture has merit and I'm not
>> sure there is a one-size-fits-all scenario to this issue.
>>
>> BTW- putting content inside of a panel that has a partial trigger will
>> get the behavior you want in facelets I believe.  I haven't tried it
>> myself, and it doesn't work with JSP's so long as you rely on JSTL, but
>> I think facelets might actually fix that issue.
>>
>> Scott
>>
>> Stephen Friedrich wrote:
>>> Too bad - and a strange (or arrogant) philosophy.
>>> If there aren't any technical issues I haven't yet understood, I think
>>> such a feature/tag should be included.
>>> Why be so inflexible and malignant considering other technologies?
>>>
>>> Trinidad: All your html are belong to us?
>>>
>>> That might perhaps have been an Oracle strategy, but it doesn't suite an
>>> Open Source project that well.
>>>
>>> My app does indeed use mostly Trinidad components.
>>> PPR is a great feature and time saver.
>>> I would not want to do without panelFormLayout.
>>> Lighweight dialogs are desperately needed.
>>>
>>> There are just a few cases where a couple of lines of html plus
>>> some css saves me from creating custom renderers or jsf components
>>> (like a highly creative process train (think "advertising agency
>>> employee with a faible for photoshop")).
>>>
>>>
>>> Scott O'Bryan wrote:
>>>> The reason is one of philosophy.  And there has been some debate over
>>>> this on the dev lists.  I think Andrew has something which may be
>>>> thrown into the sandbox..  however..
>>>>
>>>> Trindiad renderkit works off the assumption that most of your content
>>>> will be trinidad content.  As such, it has PPR built in to each
>>>> component and the famework necessary to support that PPR.  Components
>>>> external to Trinidad are assumed to be able to do their own PPR and
>>>> that is where the philosophy comes in.  Trinidad does not try to PPR
>>>> the world, it only tries to ppr itself so it can better optimize.
>>>>
>>>> Some renderkits (like A4J) take the opposite approach and basically
>>>> look at adding AJAX functionality to existing non-ppr enabled
>>>> renterkits/content.  Maybe you would be better off using a technology
>>>> like that instead of Trinidad for your application.
>>>>
>>>> Scott
>>>>
>>>> Stephen Friedrich wrote:
>>>>> I have some very specific components in my project, made using facelets
>>>>> and containing mostly pure html (with some ui:repeat thrown in).
>>>>>
>>>>> How am I supposed to make such a component the target of PPR?
>>>>>
>>>>> Why isn't there a simple non-rendering trinidad component for that
>>>>> purpose, e.g.
>>>>>
>>>>>    <tr:fragment partialTriggers="region">
>>>>>        ... html ...
>>>>>    </tr:fragment>
>>>>>
>>>>> That component could also have a rendered attribute which is nicer than
>>>>> using <c:if> (and avoids confusing facelets).
>>>>>
>>>>> Is there any other component that I could misuse for that?
>>>>>
>>>>
>>>
>>
>
>

Re: How to PPR-enable a facelet component?

Posted by Stephen Friedrich <tr...@eekboom.com>.
I really don't meant my statement to be personal at all.
It was more a general comment on Trinidad.
I apologize if it sounded differently.

I hesitate a lot to bring A4J into my app, because my experience is that
each new technology in the stack is good for a couple of days of configuration
and debugging nightmare.

There was an article about how to enable PPR for custom (non-JSF) components.
I'll try and do that with a component that simply renders a <div>.

Thanks for your comments.

Scott O'Bryan wrote:
> No need to get personal, I'm just telling you about what philosophy 
> Trinidad has origionally taken.  The idea does have some technical 
> merit.  It is very difficult to optimize/ppr content you don't own.  
> ESPECIALLY if such content is JSF content.  Trinidad didn't want to have 
> to tackles the issues involved technically.
> It's not arrogance, simply that Trinidad wasn't written to be an AJAX 
> enablement engine as much as a rich-type renderkit which extends JSF to 
> do a complete GUI.
> 
> I'm also not saying that your ideas don't have merit, and your certainly 
> welcome to argue them on the community forums here, but try to be more 
> constructive.
> 
> My suggestion about A4J was just that.  A4J does things on the PPR front 
> differently then Trinidad does.  It does this specifically because it IS 
> an AJAX enablement engine, but not as much a application development 
> renderkit like Trinidad is.  Each architecture has merit and I'm not 
> sure there is a one-size-fits-all scenario to this issue.
> 
> BTW- putting content inside of a panel that has a partial trigger will 
> get the behavior you want in facelets I believe.  I haven't tried it 
> myself, and it doesn't work with JSP's so long as you rely on JSTL, but 
> I think facelets might actually fix that issue.
> 
> Scott
> 
> Stephen Friedrich wrote:
>> Too bad - and a strange (or arrogant) philosophy.
>> If there aren't any technical issues I haven't yet understood, I think
>> such a feature/tag should be included.
>> Why be so inflexible and malignant considering other technologies?
>>
>> Trinidad: All your html are belong to us?
>>
>> That might perhaps have been an Oracle strategy, but it doesn't suite an
>> Open Source project that well.
>>
>> My app does indeed use mostly Trinidad components.
>> PPR is a great feature and time saver.
>> I would not want to do without panelFormLayout.
>> Lighweight dialogs are desperately needed.
>>
>> There are just a few cases where a couple of lines of html plus
>> some css saves me from creating custom renderers or jsf components
>> (like a highly creative process train (think "advertising agency
>> employee with a faible for photoshop")).
>>
>>
>> Scott O'Bryan wrote:
>>> The reason is one of philosophy.  And there has been some debate over 
>>> this on the dev lists.  I think Andrew has something which may be 
>>> thrown into the sandbox..  however..
>>>
>>> Trindiad renderkit works off the assumption that most of your content 
>>> will be trinidad content.  As such, it has PPR built in to each 
>>> component and the famework necessary to support that PPR.  Components 
>>> external to Trinidad are assumed to be able to do their own PPR and 
>>> that is where the philosophy comes in.  Trinidad does not try to PPR 
>>> the world, it only tries to ppr itself so it can better optimize.
>>>
>>> Some renderkits (like A4J) take the opposite approach and basically 
>>> look at adding AJAX functionality to existing non-ppr enabled 
>>> renterkits/content.  Maybe you would be better off using a technology 
>>> like that instead of Trinidad for your application.
>>>
>>> Scott
>>>
>>> Stephen Friedrich wrote:
>>>> I have some very specific components in my project, made using facelets
>>>> and containing mostly pure html (with some ui:repeat thrown in).
>>>>
>>>> How am I supposed to make such a component the target of PPR?
>>>>
>>>> Why isn't there a simple non-rendering trinidad component for that 
>>>> purpose, e.g.
>>>>
>>>>    <tr:fragment partialTriggers="region">
>>>>        ... html ...
>>>>    </tr:fragment>
>>>>
>>>> That component could also have a rendered attribute which is nicer than
>>>> using <c:if> (and avoids confusing facelets).
>>>>
>>>> Is there any other component that I could misuse for that?
>>>>
>>>
>>
> 


Re: How to PPR-enable a facelet component?

Posted by Scott O'Bryan <da...@gmail.com>.
No need to get personal, I'm just telling you about what philosophy 
Trinidad has origionally taken.  The idea does have some technical 
merit.  It is very difficult to optimize/ppr content you don't own.  
ESPECIALLY if such content is JSF content.  Trinidad didn't want to have 
to tackles the issues involved technically. 

It's not arrogance, simply that Trinidad wasn't written to be an AJAX 
enablement engine as much as a rich-type renderkit which extends JSF to 
do a complete GUI.

I'm also not saying that your ideas don't have merit, and your certainly 
welcome to argue them on the community forums here, but try to be more 
constructive.

My suggestion about A4J was just that.  A4J does things on the PPR front 
differently then Trinidad does.  It does this specifically because it IS 
an AJAX enablement engine, but not as much a application development 
renderkit like Trinidad is.  Each architecture has merit and I'm not 
sure there is a one-size-fits-all scenario to this issue.

BTW- putting content inside of a panel that has a partial trigger will 
get the behavior you want in facelets I believe.  I haven't tried it 
myself, and it doesn't work with JSP's so long as you rely on JSTL, but 
I think facelets might actually fix that issue.

Scott

Stephen Friedrich wrote:
> Too bad - and a strange (or arrogant) philosophy.
> If there aren't any technical issues I haven't yet understood, I think
> such a feature/tag should be included.
> Why be so inflexible and malignant considering other technologies?
>
> Trinidad: All your html are belong to us?
>
> That might perhaps have been an Oracle strategy, but it doesn't suite an
> Open Source project that well.
>
> My app does indeed use mostly Trinidad components.
> PPR is a great feature and time saver.
> I would not want to do without panelFormLayout.
> Lighweight dialogs are desperately needed.
>
> There are just a few cases where a couple of lines of html plus
> some css saves me from creating custom renderers or jsf components
> (like a highly creative process train (think "advertising agency
> employee with a faible for photoshop")).
>
>
> Scott O'Bryan wrote:
>> The reason is one of philosophy.  And there has been some debate over 
>> this on the dev lists.  I think Andrew has something which may be 
>> thrown into the sandbox..  however..
>>
>> Trindiad renderkit works off the assumption that most of your content 
>> will be trinidad content.  As such, it has PPR built in to each 
>> component and the famework necessary to support that PPR.  Components 
>> external to Trinidad are assumed to be able to do their own PPR and 
>> that is where the philosophy comes in.  Trinidad does not try to PPR 
>> the world, it only tries to ppr itself so it can better optimize.
>>
>> Some renderkits (like A4J) take the opposite approach and basically 
>> look at adding AJAX functionality to existing non-ppr enabled 
>> renterkits/content.  Maybe you would be better off using a technology 
>> like that instead of Trinidad for your application.
>>
>> Scott
>>
>> Stephen Friedrich wrote:
>>> I have some very specific components in my project, made using facelets
>>> and containing mostly pure html (with some ui:repeat thrown in).
>>>
>>> How am I supposed to make such a component the target of PPR?
>>>
>>> Why isn't there a simple non-rendering trinidad component for that 
>>> purpose, e.g.
>>>
>>>    <tr:fragment partialTriggers="region">
>>>        ... html ...
>>>    </tr:fragment>
>>>
>>> That component could also have a rendered attribute which is nicer than
>>> using <c:if> (and avoids confusing facelets).
>>>
>>> Is there any other component that I could misuse for that?
>>>
>>
>


Re: How to PPR-enable a facelet component?

Posted by Stephen Friedrich <tr...@eekboom.com>.
Too bad - and a strange (or arrogant) philosophy.
If there aren't any technical issues I haven't yet understood, I think
such a feature/tag should be included.
Why be so inflexible and malignant considering other technologies?

Trinidad: All your html are belong to us?

That might perhaps have been an Oracle strategy, but it doesn't suite an
Open Source project that well.

My app does indeed use mostly Trinidad components.
PPR is a great feature and time saver.
I would not want to do without panelFormLayout.
Lighweight dialogs are desperately needed.

There are just a few cases where a couple of lines of html plus
some css saves me from creating custom renderers or jsf components
(like a highly creative process train (think "advertising agency
employee with a faible for photoshop")).


Scott O'Bryan wrote:
> The reason is one of philosophy.  And there has been some debate over 
> this on the dev lists.  I think Andrew has something which may be thrown 
> into the sandbox..  however..
> 
> Trindiad renderkit works off the assumption that most of your content 
> will be trinidad content.  As such, it has PPR built in to each 
> component and the famework necessary to support that PPR.  Components 
> external to Trinidad are assumed to be able to do their own PPR and that 
> is where the philosophy comes in.  Trinidad does not try to PPR the 
> world, it only tries to ppr itself so it can better optimize.
> 
> Some renderkits (like A4J) take the opposite approach and basically look 
> at adding AJAX functionality to existing non-ppr enabled 
> renterkits/content.  Maybe you would be better off using a technology 
> like that instead of Trinidad for your application.
> 
> Scott
> 
> Stephen Friedrich wrote:
>> I have some very specific components in my project, made using facelets
>> and containing mostly pure html (with some ui:repeat thrown in).
>>
>> How am I supposed to make such a component the target of PPR?
>>
>> Why isn't there a simple non-rendering trinidad component for that 
>> purpose, e.g.
>>
>>    <tr:fragment partialTriggers="region">
>>        ... html ...
>>    </tr:fragment>
>>
>> That component could also have a rendered attribute which is nicer than
>> using <c:if> (and avoids confusing facelets).
>>
>> Is there any other component that I could misuse for that?
>>
> 


Re: How to PPR-enable a facelet component?

Posted by Scott O'Bryan <da...@gmail.com>.
The reason is one of philosophy.  And there has been some debate over 
this on the dev lists.  I think Andrew has something which may be thrown 
into the sandbox..  however..

Trindiad renderkit works off the assumption that most of your content 
will be trinidad content.  As such, it has PPR built in to each 
component and the famework necessary to support that PPR.  Components 
external to Trinidad are assumed to be able to do their own PPR and that 
is where the philosophy comes in.  Trinidad does not try to PPR the 
world, it only tries to ppr itself so it can better optimize.

Some renderkits (like A4J) take the opposite approach and basically look 
at adding AJAX functionality to existing non-ppr enabled 
renterkits/content.  Maybe you would be better off using a technology 
like that instead of Trinidad for your application.

Scott

Stephen Friedrich wrote:
> I have some very specific components in my project, made using facelets
> and containing mostly pure html (with some ui:repeat thrown in).
>
> How am I supposed to make such a component the target of PPR?
>
> Why isn't there a simple non-rendering trinidad component for that 
> purpose, e.g.
>
>    <tr:fragment partialTriggers="region">
>        ... html ...
>    </tr:fragment>
>
> That component could also have a rendered attribute which is nicer than
> using <c:if> (and avoids confusing facelets).
>
> Is there any other component that I could misuse for that?
>