Lance created TAP5-2383:
---------------------------

             Summary: 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;

   void onSuccessFromPersonForm() {
      personDao.save(person);
      componentResources.publish("personUpdated", person);
   }
}
{code}
{code:java}
public class SomeOtherComponent {
   @Inject 
   private AjaxResponseRenderer ajaxResponseRenderer;

   @Property
   private Person person;

   @Inject
   private Zone personZone;

   @Subscribe("personUpdated")
   void onPersonUpdatedPublished(Person person) {
      this.person = person;
      ajaxResponseRenderer.addRender(personZone);
   }
}
{code}     





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

Reply via email to