forgot to post the "TYPE" thing
static public final FacesBean.Type TYPE = new FacesBean.Type(
UIXInput.TYPE);
On 10/23/06, Matthias Wessendorf <[EMAIL PROTECTED]> wrote:
right.
we use in Trinidad a special FacesBean concept. You register properties like:
static public final PropertyKey RENDERED_KEY =
TYPE.registerKey("rendered", Boolean.class, Boolean.TRUE);
static public final PropertyKey BINDING_KEY =
TYPE.registerKey("binding");
...
so saveState (only used in UIXComponentBase) looks like:
public Object saveState(FacesContext context)
{
return getFacesBean().saveState(context);
}
also the getter and setter look much cleaner.
HTH,
Matthias
On 10/22/06, Martin Marinschek <[EMAIL PROTECTED]> wrote:
> Hi Randahl,
>
> look into Trinidad and the StateManager for an alternative.
>
> regards,
>
> Martin
>
> On 10/18/06, Randahl Fink Isaksen <[EMAIL PROTECTED]> wrote:
> >
> > I was wondering if there were any alternatives to this approach of creating
> > and populating arrays in each and every one of your components - has anyone
> > tried using reflection to do all of this automatically. Surely for simple
> > components one could easily run through its getter methods and extract the
> > values to generate the Object[] automatically.
> >
> > Has anyone tried such alternative approaches?
> >
> > Randahl
> >
> >
> >
> >
> > Cagatay Civici wrote:
> > The example you posted is the old code of UISaveState. It's has a special
> > usage.
> >
> > Actually you don't need to care about valuebindings. There is a special map
> > that holds the valuebindings of a component in UIComponentBase, this map is
> > saved-restored in each postback.
> >
> >
> > On 10/18/06, Randahl Fink Isaksen <[EMAIL PROTECTED]> wrote:
> > > Actually I finally found an example on the web in which the restoreState
> > > method actually takes responsibility of restoring the value bindings
> > > internal state (see below) - can anyone confirm that this is the right
> > > approach for properties with value bindings?
> > >
> > > Randahl
> > >
> > >
> > > public Object saveState(FacesContext context) {
> > > Object values[] = new Object[2];
> > > values[0] = super.saveState(context);
> > > values[1] = getValue();
> > > return values;
> > > }
> > >
> > > public void restoreState(FacesContext context, Object state) {
> > > Object values[] = (Object[]) state;
> > > super.restoreState(context, values[0]);
> > > Object savedValue = values[1];
> > > ValueBinding vb = getValueBinding("value");
> > > if (vb != null) {
> > > vb.setValue(context, savedValue);
> > > }
> > >
> > >
> > >
> > >
> > > Randahl Fink Isaksen wrote:
> > > > I have been looking through a number of MyFaces components to see how
> > > > state saving was implemented, and it turns out that all the components
> > > > I have checked simply implement the saveState and restoreState methods
> > > > by returning an Object[] containing their private properties.
> > > >
> > > > But I keep asking myself "what about value bound properties?" If I
> > > > have a component which has a property X which may be bound to
> > > > #{someBean.someProperty} does that not mean that I need to restore the
> > > > value of the value binding?
> > > >
> > > > I would expect that restoreState should check if X was bound with a
> > > > value binding and then restore the value of the value binding instead.
> > > > Could anyone please elaborate? Thanks.
> > > >
> > > > Randahl
> > > >
> > > >
> > > >
> > >
> > >
> >
> >
>
>
> --
>
> http://www.irian.at
>
> Your JSF powerhouse -
> JSF Consulting, Development and
> Courses in English and German
>
> Professional Support for Apache MyFaces
>
--
Matthias Wessendorf
http://tinyurl.com/fmywh
further stuff:
blog: http://jroller.com/page/mwessendorf
mail: mwessendorf-at-gmail-dot-com
--
Matthias Wessendorf
http://tinyurl.com/fmywh
further stuff:
blog: http://jroller.com/page/mwessendorf
mail: mwessendorf-at-gmail-dot-com