Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<p>If found a solution, which needs a little trick to work.</p> <p>First of all I have created two new interfaces in my project:</p> <pre class="lang-java prettyprint-override"><code>public interface IDataProvider { public void register(IDataObserver observer); public void unregister(IDataObserver observer); } public interface IDataObserver { public void update(); } </code></pre> <p>As a second step I implemented the two interfaces in my beans.</p> <pre class="lang-java prettyprint-override"><code>@Name(ApplicationBean.BEAN_NAME) @Scope(ScopeType.APPLICATION) public class ApplicationBean implements IDataProvider { private Set&lt;IDataObserver&gt; observerList = new HashSet&lt;IDataObserver&gt;(); @Override public void register(IDataObserver observer) { this.observerList.add(observer); } @Override public void unregister(IDataObserver observer) { this.observerList.remove(observer); } public void notifyAllObserver() { for(IDataObserver observer : observerList) { observer.update(); } } } @Name(SessionBean.BEAN_NAME) @Scope(ScopeType.SESSION) public class SessionBean implements IDataObserver { @Create public void init() { // inject dependencies injectBeans(); // register at the dataserviceprovider to be notified about data changes dataProviderService.register(this); } private void injectBeans() { dataProviderService = (DataProviderService) Component.getInstance( DataProviderService.BEAN_NAME, ScopeType.APPLICATION); } @Destroy public void shutDown() { dataProviderService.unregister(this); } @Override public void update() { // grab data from } } </code></pre> <p>Please be aware that <strong>this approach only works if you inject your seam components via Component.getInstance()</strong> and not via @In. In the later case you will always get null for them as soon as update() gets called!</p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload