hi thomas, basically you have 3 possibilities with extval: - use simple but dynamic validation, jpa based validation and cross-validation -> use extval-core + extval-property-validation (+ your custom constraints) - use bean-validation + some advanced extval mechanisms for it -> use extval-core + extval-bean-validation + an impl. of bv (+ custom bv-constraints) - create your own validation module(s)/concepts -> use extval-core + your own mechanisms on top of it
for sure you can combine all modules. you just have to take care that you don't mix different types of constraints and their concepts (esp. in combination with extval add-ons). however, i would suggest that you just use one validation-module of extval. and as soon as you are using it for a real app, you should also think about tweaking it (e.g. see [1]) two (simple) sample setups for extval + bv are available at [2] and [3]. a nice intro is available at [4]. regards, gerhard [1] http://wiki.apache.org/myfaces/Extensions/Validator/JSR303/Advanced [2] https://svn.apache.org/repos/asf/myfaces/extensions/validator/trunk/examples/hello_bean-validation/ [3] https://svn.apache.org/repos/asf/myfaces/extensions/validator/trunk/examples/feature-set_02/ [4] http://people.apache.org/~gpetracek/myfaces/extval/extval_chapter.html http://www.irian.at Your JSF powerhouse - JSF Consulting, Development and Courses in English and German Professional Support for Apache MyFaces 2010/4/26 Tom M. <[email protected]> > Hi Gerhard, hi Rudy, > > thank you for your quick response. > > I tried to proceed just like you suggested but the meta data for the bean > validation annotations is not found. ExtValUtils.getTransformedMetaData() > always returns an empty map. The reason seems to be that > DefaultValidationStrategyFactory.create(String) only holds JPA-Mappings and > no BV-Mappings. Am I missing some jars or where can I find something like > javax.validation.constraints.NotNull[Validation]Strategy or > bean:notNull[Validation]Strategy which is looked for? > > For my own annotation @RequiredExactlyOneOf (similar to ExtVal's > @RequiredIf) I managed to extract the meta data with my own transformer, > but > I have to take a closer look tomorrow how to go on from that point. > > Thomas > > > > > -----Ursprüngliche Nachricht----- > Von: Gerhard Petracek [mailto:[email protected]] > Gesendet: Montag, 26. April 2010 17:49 > An: MyFaces Discussion > Betreff: Re: ExtVal: Rendering component with visual indication for > required > fields > > hi, > > short addition: > > basically it depends on the component lib you are using. > e.g. myfaces trinidad supports such indicators out-of-the-box (also based > on > meta-data - e.g. in combination with extval). > -> extval + trinidad -> no additional effort. > > without trinidad you have to implement a small add-on for extval. > you can have a look at [1]. you just have to replace the trinidad specific > parts and you have to add the indicator on your own (depending on the found > meta-data). > > e.g.: instead of using coreOutputLabel at: > ExtValUtils.configureComponentWithMetaData(facesContext, coreOutputLabel, > metaDataResult); > you could use the targetComponent (= the input component). after this call > you can check if the targetComponent is required. > so you keep the compatibility with the required attribute of the component > and you can re-use the existing implementation of extval. > > if you are allowed to donate the add-on, i would commit it to os890 (after > reviewing it). > > regards, > gerhard > > [1] > > https://svn.apache.org/repos/asf/myfaces/extensions/validator/trunk/componen > > t-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/valid > ator/trinidad/interceptor/TrinidadRendererInterceptor.java > > http://www.irian.at > > Your JSF powerhouse - > JSF Consulting, Development and > Courses in English and German > > Professional Support for Apache MyFaces > > > > 2010/4/26 Rudy De Busscher <[email protected]> > > > hello, > > > > The main issue with your requirement is that at the time of the rendering > > of > > the outputlabel, the input text isn't treated yet (because the label is > > most > > of the time in front of the input field). So the required property of > the > > input field isn't set yet by the extval framework. (only the information > of > > the view is applied, not the annotations on the properties of the > classes) > > > > You mention also the renderer interceptor. But standard this renderer is > > only hit for any editableValueHolder( like input fields or drop downs). > > Since those are the type of components we are interested in ( in doing > the > > validation). > > The labels aren't treated at this moment (see processComponent method in > > AbstractValidationInterceptor) so you should write a custom renderer > > interceptor to achieve it. > > > > Your requirements is already on my development list (as an add-on) for a > > few > > months now but had not the time to start with it. > > > > So you need to create (at least) the following items: > > - A custom renderer interceptor for handling the output labels > > - A component initializer that put the * in front of it (caution that it > > isn't done multiple times) > > - The component initializer should search for the referenced component > (by > > the for attribute) and do the component initialization of this > > EditableValueHolder. Now the @NotNull is taken into account and the * > can > > be placed. > > > > You can also look at the Trinidad support module > > > > > > http://svn.apache.org/repos/asf/myfaces/extensions/validator/trunk/component > -support/trinidad-support > > . > > It has a label that is capable of putting a * behind the text so it is > > possible that there is already the kind of solution to your problem. You > > need to port it then only to the standard JSF (or use Trinidad in your > > project). > > > > Regards > > Rudy > > > > On 26 April 2010 14:57, <[email protected]> wrote: > > > > > Hi there, > > > > > > I've found some information at > > > http://wiki.apache.org/myfaces/Extensions/Validator/DevDoc, that it is > > > possible to mark components who require a value via a component > > initializer. > > > In addition I would like to use bean validation and to annotate a > class' > > > attributes and mark the input field or even the label of the input > field: > > > > > > 1. @NotNull for an attribute let's say "name" > > > 2. Having an output label referencing an input field > > > 3. Marking all labels referencing to required fields with a '*' > resulting > > > in "*name" > > > > > > I also found the renderer interceptor which seems to be a better choice > > for > > > me, since I want to manipulate the rendering of the label rather than > the > > > input component. > > > > > > Any suggestions? > > > > > > Thanks. > > > > >

