Hi Mike, Michael, you should not use component-bindings with session-scoped beans - if you take a look at Orchestra, you can however find a way how to embed a request-scoped bean into a session-scoped bean, and put your component-bindings there.
Looking forward to JSF 2.0, I would not use component bindings if you can help it. In JSF 2.0, much of the state will be stored in the template, not in the component-tree - so you will have better performance if you keep to the template as much as possible. regards, Martin On 10/22/07, Mike Kienenberger <[EMAIL PROTECTED]> wrote: > Not really. I have always avoided both session scoped beans and > component building via java code (except years ago before I discovered > facelets). > > I know others have done it. > > The only possibly-helpful tips I can remember are 1) do the component > creation in the getter not the setter, and always manually set an id. > > The more I think about it, the more I think I'll try the c:forEach and > c:if technique (with facelets) first. > > > On 10/22/07, Michael Heinen <[EMAIL PROTECTED]> wrote: > > Regarding your approach with the component bindings: > > I have not used them at all and I am a little bit afraid of them. > > In this list I read multiple times that they are some kind of "evil" ;-) > > specially in combination with session scoped beans. > > > > Btw I don't like my approach with the rendered flags but this allows the > > html designers to do easy modifications which they can't do if I set > > everything programmatically in components. > > But the component binding approach should be more performant of course. > > > > Do you have any good tips regarding component bindings in combination > > with session scoped beans ? > > > > Michael > > > > -----Original Message----- > > From: Mike Kienenberger [mailto:[EMAIL PROTECTED] > > Sent: Montag, 22. Oktober 2007 17:47 > > To: MyFaces Discussion > > Subject: Re: optional validator - missing rendered attribute > > > > For what it's worth, the optional validation discussions of the past > > dealt with wrapping each validator in an "optional validator" > > component, and then globally traversing the component tree. This > > approach works very poorly, so I abandoned it in favor of s:subForm. > > That will not help your situation, however. > > > > All of the tomahawk validators inherit from ValidatorBase. You could > > add an optional attribute to that class, but you'd still have to > > change each validator to evaluate it. This also won't help for the > > non-ValidatorBase validators. > > > > I will probably be in a similar situation down the road. I suspect > > that the "easiest" solution will be to bind a component (like a > > panelGroup) to a backing bean and dynamically construct the dynamic > > component tree from java code rather than trying to do it from page > > code with rendered (and active) attributes. Although with facelets, > > using c:forEach and c:if might work too. > > > > On 10/22/07, Michael Heinen <[EMAIL PROTECTED]> wrote: > > > Hi Simon, > > > > > > maybe I did not express myself or the problem well. > > > I didn't want to go on confrontation course, sorry if you got that > > impression. > > > Quite the contrary I am happy about feedback, workarounds and > > suggestions. That's the reason for my postings. > > > > > > I just was astonished that all components have the rendered attribute > > but validators not. > > > Now I know that there is not any existing feature that I missed and > > use various input components with their own validators. > > > > > > But a disadvantage of this is from my point of view that I have also > > to use multiple label tags (or EL expressions for the for-attribute > > because I have then various input fields with other client ids used in > > the for-attribute of the label tag). > > > And ajax updates will be a little bit more complex because I have to > > update a container tag rather than directly a field. > > > > > > Michael > > > > > > > > > -----Original Message----- > > > From: Simon Kitching [mailto:[EMAIL PROTECTED] > > > Sent: Montag, 22. Oktober 2007 16:08 > > > To: MyFaces Discussion > > > Cc: Michael Heinen > > > Subject: RE: optional validator - missing rendered attribute > > > > > > Hi Michael, > > > > > > ---- Michael Heinen <[EMAIL PROTECTED]> schrieb: > > > > Here is a sample: > > > > > > > > <t:dataList id="myFields" > > > > value="#{FieldConfigurationController.myFields}" > > > > var="entry"> > > > > <t:div rendered="#{entry.type=='inputText'}"> > > > > <t:inputText id="s_inputText" > > > > > > value="#{MyController.search.attributes[entry.name]}" > > > > ... > > > > > <my:validateCompareTo active="#{entry.contentType=='range' && > > entry.name='to'}" > > > > for="rangeFrom" > > > > operator=">=" > > > > .../> > > > > <my:validateEmail active="#{entry.contentType=='email'}" ...> > > > > </t:inputText> > > > > ... > > > > </t:div> > > > > <t:div rendered="#{entry.type=='selectOne'}"> > > > > ... > > > > </t:div> > > > > <t:dataList> > > > > > > > > I loop over a list which contains the fields that should be > > rendered. > > > > These fields are not known at compile time. The fields are created > > dynamically based on a database or other repositories. > > > > The model is also completely dynamic. It is represented by maps and > > accessed by field names. > > > > > > > > The above my:validateCompareTo should only be attached to fields of > > contentType range and should validate the upper against with the lower > > value. > > > > (e.g. see http://myfaces.apache.org/sandbox/validateCompareTo.html > > > > This validator is attached to the bottom-most component to > > insure that the foreign component's value has been converted and > > validated first) > > > > > > > > my:validateEmail should be attached to fields of contentType email > > only. > > > > > > > > I don't want to use multiple input fields if they are rendered all > > the same way. > > > > Do you now see the difficulty ? > > > > > > Yes, I see. > > > > > > However I think this is a fairly unusual situation. I don't believe > > that handling validation for such dynamically-created and > > dynamically-typed input components really qualifies as "a common > > use-case". > > > > > > However can't this be solved simply by moving the input component > > inside the type-test? IE rather than: > > > for each field to render > > > add an inputText, always rendered > > > attach validator1, active if type=1 > > > attach validator2, active if type=2 > > > do: > > > for each field to render > > > add inputText rendered if type=1, with validator1 > > > add inputText rendered if type=2, with validator2 > > > > > > Yes, this does mean repeating the input-component for each type. But > > that gives the opportunity to change the actual input component type > > based on what the field-type is. Ok, *you* might happen to always want > > an input-text for all types, but I think this is a more general > > solution, and not too inconvenient in your case. > > > > > > In terms of memory usage and performance, the above are about equal. > > Either one component exists, with N validators (N+1 objects), or N > > components exist each with 1 validator (2N objects). Given that N is > > fairly small, this isn't significant IMO. > > > > > > That doesn't mean there is anything wrong with your "active" solution, > > but I don't personally see any need to amend the spec to support this > > use-case when it is (a) pretty rare, and (b) already has a reasonable > > solution. That's just my view of course. > > > > > > By the way, open-source projects are always happy to get > > suggestions/feedback (or should be); it's how projects get better. > > However when posting a message, please take care not to imply that the > > people in charge of the projects are fools for not solving the problem > > the way you think it should be solved. This email thread was perhaps a > > bit more confrontational than necessary.. > > > > > > Regards, > > > > > > Simon > > > > > > > > > > > -- http://www.irian.at Your JSF powerhouse - JSF Consulting, Development and Courses in English and German Professional Support for Apache MyFaces