Option 1) Instead of using entryBean.subProjects to check for disabled, why not, since you are already using component binding, just set the component disabled attribute to true or false based on when it changes. Set it to true in the page and then when you set it in the component, it will remember that state and no longer check the EL.
Option 2) Store the disable state in the pageFlowScope Option 3) Use a session scoped bean to store the disabled state Option 4 (JSF 2 only)) Store the disabled state in the viewScope Option 5 (3rd party)) Store the value in a conversation scope provided by a 3rd party library On Mon, Feb 15, 2010 at 1:02 PM, Jean-Noël Colin <[email protected]> wrote: > Andrew, > > entryBean is indeed in request scope. Indeed, entryBean.subProjects is > always null, and I suspected this was related to the 'disabled' attribute. > Thus my question is: how can I set the proper value before the decoding is > done? When should that be performed? > > Thanks for your help > > Jean-Noel > > On 15 Feb 2010, at 19:03, Andrew Robinson wrote: > >> What scope is entryBean? >> >> If entryBean is requestScope, then entryBean.subProjects will be null >> on each request and would need to be set before the decoding is done, >> otherwise the 2nd choice will never decode as it will be disabled. If >> entryBean is not requestScope than you also have a problem as you >> cannot use component binding with non-request scoped objects. >> >> -Andrew >> >> On Sun, Feb 14, 2010 at 8:32 AM, Jean-Noël Colin <[email protected]> wrote: >>> Hi >>> >>> I need to write a simple page with 2 selectOneChoice components, the second >>> being dependent on the first. This means that the second should be disabled >>> as long as a correct value in the first one has not been selected. Also, >>> the items in the second need to be dynamically loaded depending on the >>> content on the first one. >>> >>> I guess this should be easily feasible in Trinidad, but obviously, I must >>> be missing something because I can't get it to work. it seems that the >>> value of the second component never gets properly populated in the bean >>> entry. Also, strangely, in the 'valuechangelistener', the oldvalue is >>> always null, even when a proper value was correctly selected. >>> >>> Also, is it possible to avoid the presence of a 'empty' selectItem by >>> auto-selecting the first valid entry (how can I do that)? >>> >>> Thanks a lot for your help >>> >>> Jean-Noel Colin >>> >>> >>> >>> >>> <tr:selectOneChoice id="project" >>> label="project" >>> >>> binding="#{entryBean.projectSelector}" >>> >>> value="#{entryBean.currentLine.projectId}" showRequired="true" >>> autoSubmit="true" >>> unselectedLabel="Select" immediate="true" >>> >>> valueChangeListener="#{entryBean.projectChangeListener}"> >>> <f:selectItems >>> value="#{globalData.activeprojects}" /> >>> </tr:selectOneChoice> >>> <tr:selectOneChoice id="subproject" >>> label="sub-project" >>> partialTriggers="project" >>> binding="#{entryBean.subProjectSelector}" >>> >>> value="#{entryBean.currentLine.subProjectId}" showRequired="true" >>> unselectedLabel="Select" >>> disabled="#{empty entryBean.subProjects}"> >>> <f:selectItems >>> value="#{entryBean.subProjects}" /> >>> </tr:selectOneChoice> >>> >>> > >

