have you tried to set the "immediate" attribute on the ui-input component?

regards,

Martin

On 6/12/05, Richard Wallace <[EMAIL PROTECTED]> wrote:
> I understand all that you've said and am using some application scoped
> beans for global select items that don't change.  The problem is that
> the list of items that I'm working with now are database backed and are
> likely to change often.  I can maybe cache the top level select list
> items, the organizations and update it when an organization is added or
> updated.  But the others, the list items for departments and personnel
> are dependent on the selected organization so there's no way to cache
> them.
> 
> What about my other questions?  When the second select list, the
> department, selected value changes and the page is submitted for
> immediate event handling, it seems the only way to avoid validation
> _and_ have the selected organization set in the backing bean is to
> lookup the value myself using the
> FacesContext.getExternalContext().getParameterMap().  Is there a better
> way to accomplish this?
> 
> Thanks for the feedback,
> Rich
> Craig McClanahan wrote:
> 
> >One thing to remember is that you are *not* limited to referencing a
> >single backing bean.  Using a request scope backing bean corresponding
> >to the page is fine ... but quite often, the lists of select items are
> >fairly constant, and you'd *really* like to build them only once,
> >right?
> >
> >In the Shale <http://struts.apache.org/shale> "use cases" example
> >application, there is an illustration of the technique I prefer for
> >this ... bind select lists to a property on an application scoped
> >managed bean (if they are common to all users) or on a session scoped
> >managed bean (if they are specific to a user).  The example includes
> >"select locale" use case, which includes a dropdown like this:
> >
> >    <h:selectOneListbox id="locale"
> >        value="#{locale$select.locale}">
> >            <h:selectItems value="#{domains.supportedLocales}"/>
> >    </h:selectOneListbox>
> >
> >where "locale$select" is my request scoped managed bean for this page,
> >and "domains" is an application scoped managed bean that includes this
> >method:
> >
> >    public SelectItem[] getSupportedLocales();
> >
> >Inside this method, you have a number of alternative strategies
> >available ... and you can change your choice without callers having a
> >clue :-).  Consider among other options:
> >
> >* Lazily instantiating the list the first time someone calls this method.
> >
> >* Using a ServletContextListener to load up the appropriate data before
> >  the first request is received.
> >
> >* Either of the above two techniques, plus a timer thread to erase the
> >  cached value after a given amount of time (to pick up the changes that
> >  occasionally occur, without having to restart the app).
> >
> >* Either of the above two techniques, plus embedded logic that does a
> >  relatively cheap database access to determine whether the data has
> >  changed, and refreshes the list first.
> >
> >Doing this sort of logic on every request is quite likely a waste of
> >resources.  Strive to minimize the number of times you do things like
> >"create a SelectItems array containing the 50 state abbreviations and
> >names" :-).  That's the sort of thing I would want to do just once
> >:-).
> >
> >Craig McClanahan
> >
> >
> >On 6/11/05, Richard Wallace <[EMAIL PROTECTED]> wrote:
> >
> >
> >>I just thought that I should also mention that my backing bean is a
> >>request scoped object.  So another solution is to switch this to a
> >>session based backing bean, but my backing bean is where the select
> >>items for organizations, departments and contacts for the list boxes and
> >>drop-down menus are generated.  I would like to be able to cache those
> >>for the life of the request but they shouldn't be cached across requests
> >>since they could change at any time.
> >>
> >>What's the best practice for these backing beans?  My design is pretty
> >>much following the design ideas in a couple of articles I've read where
> >>the backing bean contains the current selected object and the JSF pages
> >>bind with value="#{contactHandler.currentContact.firstName}" for
> >>example.  Is it better to have this backing bean be session scoped or
> >>request scoped?
> >>
> >>Richard Wallace wrote:
> >>
> >>
> >>
> >>>Richard Wallace wrote:
> >>>
> >>>
> >>>
> >>>>So what do I need to do to fix this?  One idea is to try and find the
> >>>>value that JSF will use in the form and use that if there is one and
> >>>>then otherwise use the backing beans value when I'm generating the
> >>>>department choices.  Seems kind of hacky since that's one of the
> >>>>things that JSF is supposed to do for you is provide the form
> >>>>values.  I'm also not certain how to get the values that JSF is going
> >>>>to use in the forms without having it update the model values.
> >>>>
> >>>>
> >>>Well, I figured this part out at least.  I can use the
> >>>FacesContext.getExternalContext ().getRequestParameterMap(), but then
> >>>I'd need to know the key of the form and form element to be able to
> >>>lookup the value.  Obviously, not an ideal solution.
> >>>
> >>>
> >>>
> >>>>Another idea is if I can somehow avoid doing the validation some
> >>>>other way.  That's really the only reason I need to do the event
> >>>>processing right away and then skip to the rendering phase.  But I've
> >>>>looked and there doesn't seem to be another way of bypassing validation.
> >>>>
> >>>>
> >>>Well, I've looked around and this doesn't seem possible.  Unless I can
> >>>do something with PhaseListeners, but I don't see how.
> >>>
> >>>Please help!
> >>>
> >>>Thanks,
> >>>Rich
> >>>
> >>>
> >>
> >>
> >>
> 
>

Reply via email to