Note that there are some explanatory texts on larger screens.

plurals
  1. POManaged bean is constructed again after i left the page
    primarykey
    data
    text
    <p>i've faced a strange problem with managed beans. Sometimes when i navigate from one page to another a bean from first page is constructed again after second page is loaded (it's even rendered in browser by this time). I can't understand why it happens because there's no any references to the first bean from second page. Both pages are accessible from menu but there's also navigation cases to load one page from another.<br> This bug always appears when i load second page first, then go via menu to first page and then call firstBean's action that forwards me to the second page. But it also sometimes appears in case when first page is loaded first.</p> <p>May be it will be more clear in some schematic.</p> <p>firstBean = firsPage<br> secondBean = secondPage </p> <p>In this scenario:<br> menu -> secondPage -> menu -> firstPage -> secondPage<br> -- firstBean is always constructed after secondPage is loaded</p> <p>But in another scenario:<br> menu -> firstPage -> secondPage<br> -- firstBean sometimes constructed after secondPage is loaded and sometimes not (i suppose it doesn't happen only when i do it for the first time :) ) </p> <p>Again: there's no references to firstBean from secondPage or secondBean.</p> <p>So, why firstBean is constructed after secondPage is loaded?</p> <hr> <p>UPDATE<br> Forgot to mention: firstBean not only constructed (that wouldn't be a problem) but it also reads data for <code>&lt;rich:extendedDataTable&gt;</code>! That's what's strange! Why does it read data for table which is not rendered? It doesn't exist at all on secondPage. </p> <hr> <p>UPDATE 2<br> I use <code>&lt;a4j:keepAlive&gt;</code> with <code>ajaxOnly="true"</code>.</p> <hr> <p>UPDATE 3 </p> <p>Here's print of method calls including phases.<br> I'm on "Networks" page and i press "Event types" menu item:<br> <code>START PHASE RESTORE_VIEW 1<br> END PHASE RESTORE_VIEW 1<br> START PHASE APPLY_REQUEST_VALUES 2<br> class ui.network.MbNetworks getFilter: net.Network@ae8a2c<br> MbNetworks &lt;init&gt;: constructed 2011-03-16 18:13:23,860<br> class ui.network.MbNetworks getTabName: detailsTab<br> Menu processSelection: Pressed menu<br> END PHASE APPLY_REQUEST_VALUES 2<br> START PHASE PROCESS_VALIDATIONS 3<br> END PHASE PROCESS_VALIDATIONS 3<br> START PHASE UPDATE_MODEL_VALUES 4<br> END PHASE UPDATE_MODEL_VALUES 4<br> START PHASE INVOKE_APPLICATION 5<br> END PHASE INVOKE_APPLICATION 5<br> START PHASE RENDER_RESPONSE 6<br> MbEventTypes &lt;init&gt;: constructed 2011-03-16 18:13:23,969<br> class ui.common.events.MbEventTypes getEventTypesItems: [javax.faces.model.SelectItem@197889e, ...]<br> class ui.common.events.MbEventTypes getFilter: common.events.EventType@bab853<br> class ui.common.events.MbEventTypes getEntityTypes: [javax.faces.model.SelectItem@9b80b4, ...]<br> class ui.common.events.MbEventTypes getFilter: common.events.EventType@bab853<br> class ui.common.events.MbEventTypes access$0: Data size<br> class ui.common.events.MbEventTypes getRowsNum: 20<br> class ui.common.events.MbEventTypes access$0: Data<br> class ui.common.events.MbEventTypes getItemSelection: null<br> class ui.common.events.MbEventTypes getRowsNum: 20<br> class ui.common.events.MbEventTypes getRowsNum: 20<br> class ui.common.events.MbEventTypes getRowsNum: 20<br> class ui.common.events.MbEventTypes getActiveEventType: null<br> class ui.common.events.MbEventTypes getActiveEventType: null<br> class ui.common.events.MbEventTypes getEventTypesItems: [javax.faces.model.SelectItem@1dfab16, ...]<br> class ui.common.events.MbEventTypes getNewEventType: common.events.EventType@1f84cb0<br> class ui.common.events.MbEventTypes getEntityTypes: [javax.faces.model.SelectItem@154953, ...]<br> class ui.common.events.MbEventTypes getNewEventType: common.events.EventType@1f84cb0<br> class ui.common.events.MbEventTypes getRowsNum: 20<br> END PHASE RENDER_RESPONSE 6<br> START PHASE RESTORE_VIEW 1<br> END PHASE RESTORE_VIEW 1<br> START PHASE RENDER_RESPONSE 6<br> class ui.network.MbNetworks getFilter: net.Network@65f126</code><br> By this time "Event types" form is completely loaded, i can see the page, browser doesn't wait for any data anymore. There you can already see one strange thing: getFilter of MbNetworks is called. Moreover my break point stands on the first line of constructor of MbNetworks. Method is called before bean is intitated? Well, may be it's just Eclipse bug. Anyway strange things continue: every getter of MbNetworks is called. (remember that "Networks" page is absent, i'm on "Event types" page which has nothing common with networks)<br> <code>MbNetworks &lt;init&gt;: constructed 2011-03-16 18:14:01,156<br> class ui.network.MbNetworks getFilter: net.Network@65f126<br> class ui.network.MbNetworks getInstitutions: [javax.faces.model.SelectItem@160ac3e, ...]<br> class ui.network.MbNetworks getFilter: net.Network@65f126<br> class ui.network.MbNetworks access$3: Data size<br> class ui.network.MbNetworks getRowsNum: 20<br> class ui.network.MbNetworks access$3: Data<br> class ui.network.MbNetworks getItemSelection: null<br> class ui.network.MbNetworks getRowsNum: 20<br> class ui.network.MbNetworks getRowsNum: 20<br> class ui.network.MbNetworks getRowsNum: 20<br> class ui.network.MbNetworks getActiveNetwork: null<br> class ui.network.MbNetworks getActiveNetwork: null<br> class ui.network.MbNetworks getTabName: detailsTab<br> class ui.network.MbNetworks getTabName: detailsTab<br> class ui.network.MbNetworks getLanguages: [javax.faces.model.SelectItem@130a65, javax.faces.model.SelectItem@f9d23]<br> class ui.network.MbNetworks getActiveNetwork: null<br> ...<br> class ui.network.MbNetworks getActiveNetwork: null<br> class ui.network.MbNetworks getLanguages: [javax.faces.model.SelectItem@130a65, javax.faces.model.SelectItem@f9d23]<br> class ui.network.MbNetworks getNewNetwork: net.Network@5d0f3<br> class ui.network.MbNetworks getInstitutions: [javax.faces.model.SelectItem@160ac3e, ...]<br> class ui.network.MbNetworks getNewNetwork: net.Network@5d0f3<br> ...<br> class ui.network.MbNetworks getNewNetwork: net.Network@5d0f3<br> class ui.network.MbNetworks getRowsNum: 20<br> END PHASE RENDER_RESPONSE 6</code> </p> <p>Btw, (for BalusC comment) there's no AJAX query in Firebug after page is loaded. </p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

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