tapestry-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Lance (JIRA)" <j...@apache.org>
Subject [jira] [Comment Edited] (TAP5-2383) Serverside publish / subscribe mechanism
Date Thu, 04 Sep 2014 10:52:52 GMT

    [ https://issues.apache.org/jira/browse/TAP5-2383?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14121232#comment-14121232
] 

Lance edited comment on TAP5-2383 at 9/4/14 10:52 AM:
------------------------------------------------------

{quote}It is hard to say without having an actual case.{quote}
I thought Dmitry's use case was an actual case, and a pretty good one!

{quote}You could let UserInfoEditor refresh the whole page{quote}
Of course we can, but this is web 2.0

{quote}You could have UserInfoEditor trigger an event indicating that user info has changed
and have the appropriate container refresh the necessary zones, you could use a separate page
for user editing automatically giving you the full refresh after edit, you could implement
pub/sub on the server side or client side, whatever you think is best...{quote}
So, your solutions either involve full page refresh or one component knowing about the zones
in another? This is exactly what we are trying to avoid.





was (Author: uklance):
{quote}It is hard to say without having an actual case.{quote}
I thought Dmitry's use case was an actual case, and a pretty good one!

{quote}You could let UserInfoEditor refresh the whole page{quote}
Of course we can, but this is web 2.0

{quote}You could let UserInfoEditor refresh the whole page, you could have UserInfoEditor
trigger an event indicating that user info has changed and have the appropriate container
refresh the necessary zones, you could use a separate page for user editing automatically
giving you the full refresh after edit, you could implement pub/sub on the server side or
client side, whatever you think is best...{quote}
So, your solutions either involve full page refresh or one component knowing about the zones
in another? This is exactly what we are trying to avoid.




> Serverside publish / subscribe mechanism
> ----------------------------------------
>
>                 Key: TAP5-2383
>                 URL: https://issues.apache.org/jira/browse/TAP5-2383
>             Project: Tapestry 5
>          Issue Type: New Feature
>          Components: tapestry-core
>            Reporter: Lance
>            Priority: Minor
>
> In some cases, an event in one component should cause an action (eg ajax update) in another.
When these components are siblings it sometimes gets tricky having to pass zone id's around
and having one component update the other.
> It would be nice to decouple the components with a serverside pub/sub mechanism. Here's
an initial brain dump on how it could work.
> {code:java}
> public class EditPersonComponent {
>    @Parameter
>    private Person person;
>    @Inject
>    private PersonDao personDao;
>    @Inject
>    private ComponentResources componentResources;
>    // lets assume there's a form in the component which gets posted
>    void onSuccessFromPersonForm() {
>       personDao.save(person);
>       componentResources.publish("personUpdated", person); // new method on ComponentResources
>    }
> }
> {code}
> {code:java}
> public class SomeOtherComponent {
>    @Inject 
>    private AjaxResponseRenderer ajaxResponseRenderer;
>    @Property
>    private Person person;
>    @Inject
>    private Zone personZone;
>    // new subscribe annotation (and naming convention?)
>    @Subscribe("personUpdated")
>    void onPersonUpdatedPublished(Person person) {
>       this.person = person;
>       ajaxResponseRenderer.addRender(personZone);
>    }
> }
> {code}     
> If this change was made on ComponentResources, we should probably add the following to
support invoking publish events on the client
> {code}
> Link ComponentResources.createPublishLink(String eventType, Object... context)
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Mime
View raw message