Re: ExtVal: Rendering component with visual indication for required fields

2010-04-28 Thread Rudy De Busscher
 component). after this call you can check if the
targetComponent is required.
  
   Does that mean after configuring the component's attribute 'required'
  would
   be set? I didn't try that. Is there really a need for the component
   initialize and initiating the call via
   ExtValUtils.configureComponentWithMetaData()?
  
   For my already mentioned @RequiredExactlyOneOf cross validation
  annotation
   (which works fine regarding validation), I managed to render all labels
   belonging to the specified attributes via the renderer interceptor. But
   this
   only works if the annotation is defined at the attribute that occurs
  first
   in the html in order to manipulate the labels that are rendered later
 on.
   Possibly there would be a better solution to avoid this tight coupling
 by
   really using ExtVal's infrastructure!?
  
   Tom
  
  
  
-Ursprüngliche Nachricht-
Von: Gerhard Petracek [mailto:gerhard.petra...@gmail.com]
Gesendet: Dienstag, 27. April 2010 00:45
An: MyFaces Discussion
Betreff: Re: ExtVal: Rendering component with visual indication for
required fields
   
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/exa
mples/hello_bean-validation/
[3]
   
  https://svn.apache.org/repos/asf/myfaces/extensions/validator/trunk/exa
mples/feature-set_02/
[4]
   
 http://people.apache.org/~gpetracek/myfaces/extval/extval_chapter.htmlhttp://people.apache.org/%7Egpetracek/myfaces/extval/extval_chapter.html
  
 http://people.apache.org/%7Egpetracek/myfaces/extval/extval_chapter.html
  
  
 



Re: ExtVal: Rendering component with visual indication for required fields

2010-04-28 Thread Gerhard Petracek
 'for'
   
   MetaDataExtractor extractor =
createMetaDataExtractor();
   for (MetaDataEntry entry :
extractor.extract(facesContext, inputComp).getMetaDataEntries()) {
   
   checkAndHandleRequiredAttribute(labelComp,
entry.getKey());
   }
   }
   }
   
   private MetaDataExtractor createMetaDataExtractor() {
   return ExtValContext.getContext().getFactoryFinder()
   
.getFactory(FactoryNames.COMPONENT_META_DATA_EXTRACTOR_FACTORY,
ComponentMetaDataExtractorFactory.class)
   .create();
   }
   
   private void checkAndHandleRequiredAttribute(HtmlOutputLabel
labelComp, String key) {
   
   if (NotNull.class.getName().equals(key)) {
   String label = (String) labelComp.getValue();
   if (!label.startsWith(REQUIRED_SYMBOL)) {
   
labelComp.setValue(REQUIRED_SYMBOL+labelComp.getValue());
}
}
   }
  }
   
A question to:
 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.
   
Does that mean after configuring the component's attribute 'required'
   would
be set? I didn't try that. Is there really a need for the component
initialize and initiating the call via
ExtValUtils.configureComponentWithMetaData()?
   
For my already mentioned @RequiredExactlyOneOf cross validation
   annotation
(which works fine regarding validation), I managed to render all
 labels
belonging to the specified attributes via the renderer interceptor.
 But
this
only works if the annotation is defined at the attribute that occurs
   first
in the html in order to manipulate the labels that are rendered later
  on.
Possibly there would be a better solution to avoid this tight
 coupling
  by
really using ExtVal's infrastructure!?
   
Tom
   
   
   
 -Ursprüngliche Nachricht-
 Von: Gerhard Petracek [mailto:gerhard.petra...@gmail.com]
 Gesendet: Dienstag, 27. April 2010 00:45
 An: MyFaces Discussion
 Betreff: Re: ExtVal: Rendering component with visual indication for
 required fields

 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/exa
 mples/hello_bean-validation/
 [3]

  
 https://svn.apache.org/repos/asf/myfaces/extensions/validator/trunk/exa
 mples/feature-set_02/
 [4]

  http://people.apache.org/~gpetracek/myfaces/extval/extval_chapter.html
 http://people.apache.org/%7Egpetracek/myfaces/extval/extval_chapter.html
   
  http://people.apache.org/%7Egpetracek/myfaces/extval/extval_chapter.html
 
   
   
  
 



AW: ExtVal: Rendering component with visual indication for required fields

2010-04-28 Thread Tom M.
Hi Gerhard, hi Rudy,

thanks for your explanation so far. MetaData, Transformers, Component
Initializers and so on have become clear(er) to me now. 

Thanks for the coded add-on which covers some more aspects than I thought of
(possibly EL expression in the label’s value, etc.) and which is working for
ExtVal based annotations. I changed my renderer only code to your example.

Still I have to say as in a mail of mine before, this is NOT working for
bean validation annotations since in
ExtValUtils.getTransformedMetaDataWith() no meta data is extracted because a
validation strategy class cannot be located through different naming
conventions (like '
javax.validation.constraints.NotNull[Validation]Strategy'). Seems there is
some configuration or mapping missing? I could not find any hints in Rudy's
code.

Only if I leave out the check for !metaDataResult.isEmpty() it is working,
the setting of the attribute required is done in
org.apache.myfaces.extensions.validator.beanval.HtmlCoreComponentsComponentI
nitializer since the super call isComponentRequired(UIComponent) returns
true what is not based on the annotations but on other component attributes
like not being disabled nor being readonly. 

Can you took another look into this?

Thank you.

Tom



 -Ursprüngliche Nachricht-
 Von: Rudy De Busscher [mailto:rdebussc...@gmail.com]
 Gesendet: Mittwoch, 28. April 2010 12:00
 An: MyFaces Discussion
 Betreff: Re: ExtVal: Rendering component with visual indication for
 required fields
 
 Tom,
 
 I quickly assembled the add-on I was thinking about a few months ago.
 You
 can find it here (1)
 
 If you check out the code and do a mvn install in the requiredLabel
 directory, the add-on is locally available.
 
 You then can use it in your project by including following dependency
 in
 your POM.
 dependency
 groupIdsandbox890.extensions.validator.addon/groupId
 artifactIdrequired-label/artifactId
 
 version1.2.3-SNAPSHOT/version
 /dependency
 
 It summarizes the discussions we had here how you could implement the
 requirement of showing a marker.  I did a quick test with the @Required
 annotation and it works as expected.  The Bean validation annotations
 should
 also work.
 
 (1) http://sandbox890.googlecode.com/svn/trunk/addons
 
 regards
 Rudy.
 
 
 On 28 April 2010 00:55, Gerhard Petracek gerhard.petra...@gmail.com
 wrote:
 
  hi tom,
 
  some additions:
 
  first of all: thx for your questions. such questions allow us to
 improve
  the
  documentation!
  (+ usually there is a simple solution provided by extval and you
 don't have
  to care about such extval internals.)
 
  @renderer interceptors:
  the concept allows extval to do all the magic it offers. however,
 usually
  it's an internal concept.
  you just need it e.g. for add-ons (the label support you would like
 to
  implement is such an add-on)
 
  *...@meta-data transformers*
  if you have custom constraints, you normally impl. a meta-data
 transformer
  for each annotation you would like to use for component
 initialization.
  *and that's it.*
  *
  *
  *(in case of bv it's a bit more difficult - e.g.: you have to care
 about
  group validation, composite constraints,...).*
  *
  *
  you can transform information provided by concrete meta-data to a
 generic
  representation.
  e.g. @Size (bv) and @Length (extval) provide the same information. so
 you
  just have to impl. a transformer e.g. for @Size which extracts the
  information.
  as soon as you forward the extracted information to extval, the
 framework
  does the rest (if it knows how to handle the provided information).
 so you
  don't have to care about all the other details and internals.
 
  @component initialization (i just use trinidad as concrete example):
  you just have to impl. a component initializer e.g. for your
 component lib
  if
   - you have (input) components which provide special features and the
  components aren't supported by extval (or an extval-add-on).
   - you have a new type of meta-data (e.g. if you would like to add a
  client-side validator for validating @EMail)
 
  e.g. trinidad offers client-side validation. so the optional trinidad
  module
  of extval uses the information provided by the transformers to add
  client-side validators and to set properties of the trinidad
 components. so
  trinidad isn't aware of extal. it just gets plain (initialized)
 trinidad
  components. the trinidad support module isn't aware of a concrete
  annotation
  like @Length - it just knows that there is a generic representation
 to
  express e.g. min and max length (independent of the used constraint).
 -
  you
  get client-side validation based on constraints and support modules
 like
  the
  trinidad module aren't aware of the concrete annotations. so you can
 impl.
  your custom constraints or use bv constraints,... - as soon as you
  transform
  the provided information to a known (generic) format, extval is able
 to use

Re: ExtVal: Rendering component with visual indication for required fields

2010-04-28 Thread Gerhard Petracek
hi tom,

yes - the add-on i'll commit will also work with bv!

regards,
gerhard

http://www.irian.at

Your JSF powerhouse -
JSF Consulting, Development and
Courses in English and German

Professional Support for Apache MyFaces



2010/4/28 Tom M. mynewsgro...@arcor.de

 Hi Gerhard, hi Rudy,

 thanks for your explanation so far. MetaData, Transformers, Component
 Initializers and so on have become clear(er) to me now.

 Thanks for the coded add-on which covers some more aspects than I thought
 of
 (possibly EL expression in the label’s value, etc.) and which is working
 for
 ExtVal based annotations. I changed my renderer only code to your example.

 Still I have to say as in a mail of mine before, this is NOT working for
 bean validation annotations since in
 ExtValUtils.getTransformedMetaDataWith() no meta data is extracted because
 a
 validation strategy class cannot be located through different naming
 conventions (like '
 javax.validation.constraints.NotNull[Validation]Strategy'). Seems there is
 some configuration or mapping missing? I could not find any hints in Rudy's
 code.

 Only if I leave out the check for !metaDataResult.isEmpty() it is working,
 the setting of the attribute required is done in

 org.apache.myfaces.extensions.validator.beanval.HtmlCoreComponentsComponentI
 nitializer since the super call isComponentRequired(UIComponent) returns
 true what is not based on the annotations but on other component attributes
 like not being disabled nor being readonly.

 Can you took another look into this?

 Thank you.

 Tom



  -Ursprüngliche Nachricht-
  Von: Rudy De Busscher [mailto:rdebussc...@gmail.com]
  Gesendet: Mittwoch, 28. April 2010 12:00
  An: MyFaces Discussion
  Betreff: Re: ExtVal: Rendering component with visual indication for
  required fields
 
  Tom,
 
  I quickly assembled the add-on I was thinking about a few months ago.
  You
  can find it here (1)
 
  If you check out the code and do a mvn install in the requiredLabel
  directory, the add-on is locally available.
 
  You then can use it in your project by including following dependency
  in
  your POM.
  dependency
  groupIdsandbox890.extensions.validator.addon/groupId
  artifactIdrequired-label/artifactId
 
  version1.2.3-SNAPSHOT/version
  /dependency
 
  It summarizes the discussions we had here how you could implement the
  requirement of showing a marker.  I did a quick test with the @Required
  annotation and it works as expected.  The Bean validation annotations
  should
  also work.
 
  (1) http://sandbox890.googlecode.com/svn/trunk/addons
 
  regards
  Rudy.
 
 
  On 28 April 2010 00:55, Gerhard Petracek gerhard.petra...@gmail.com
  wrote:
 
   hi tom,
  
   some additions:
  
   first of all: thx for your questions. such questions allow us to
  improve
   the
   documentation!
   (+ usually there is a simple solution provided by extval and you
  don't have
   to care about such extval internals.)
  
   @renderer interceptors:
   the concept allows extval to do all the magic it offers. however,
  usually
   it's an internal concept.
   you just need it e.g. for add-ons (the label support you would like
  to
   implement is such an add-on)
  
   *...@meta-data transformers*
   if you have custom constraints, you normally impl. a meta-data
  transformer
   for each annotation you would like to use for component
  initialization.
   *and that's it.*
   *
   *
   *(in case of bv it's a bit more difficult - e.g.: you have to care
  about
   group validation, composite constraints,...).*
   *
   *
   you can transform information provided by concrete meta-data to a
  generic
   representation.
   e.g. @Size (bv) and @Length (extval) provide the same information. so
  you
   just have to impl. a transformer e.g. for @Size which extracts the
   information.
   as soon as you forward the extracted information to extval, the
  framework
   does the rest (if it knows how to handle the provided information).
  so you
   don't have to care about all the other details and internals.
  
   @component initialization (i just use trinidad as concrete example):
   you just have to impl. a component initializer e.g. for your
  component lib
   if
- you have (input) components which provide special features and the
   components aren't supported by extval (or an extval-add-on).
- you have a new type of meta-data (e.g. if you would like to add a
   client-side validator for validating @EMail)
  
   e.g. trinidad offers client-side validation. so the optional trinidad
   module
   of extval uses the information provided by the transformers to add
   client-side validators and to set properties of the trinidad
  components. so
   trinidad isn't aware of extal. it just gets plain (initialized)
  trinidad
   components. the trinidad support module isn't aware of a concrete
   annotation
   like @Length - it just knows that there is a generic representation
  to
   express

Re: ExtVal: Rendering component with visual indication for required fields

2010-04-28 Thread Gerhard Petracek
hi,

i committed the first versions of the add-ons at [1] and [2].
- you are welcome to test it!

regards,
gerhard

[1]
http://code.google.com/p/os890/source/browse/#svn/trunk/java/web/jsf/extval/required_label
[2]
http://code.google.com/p/os890/source/browse/#svn/trunk/java/web/jsf/extval.bv/required_label

http://www.irian.at

Your JSF powerhouse -
JSF Consulting, Development and
Courses in English and German

Professional Support for Apache MyFaces



2010/4/28 Gerhard Petracek gerhard.petra...@gmail.com

 hi tom,

 yes - the add-on i'll commit will also work with bv!

 regards,
 gerhard


 http://www.irian.at

 Your JSF powerhouse -
 JSF Consulting, Development and
 Courses in English and German

 Professional Support for Apache MyFaces



 2010/4/28 Tom M. mynewsgro...@arcor.de

 Hi Gerhard, hi Rudy,

 thanks for your explanation so far. MetaData, Transformers, Component
 Initializers and so on have become clear(er) to me now.

 Thanks for the coded add-on which covers some more aspects than I thought
 of
 (possibly EL expression in the label’s value, etc.) and which is working
 for
 ExtVal based annotations. I changed my renderer only code to your example.

 Still I have to say as in a mail of mine before, this is NOT working for
 bean validation annotations since in
 ExtValUtils.getTransformedMetaDataWith() no meta data is extracted because
 a
 validation strategy class cannot be located through different naming
 conventions (like '
 javax.validation.constraints.NotNull[Validation]Strategy'). Seems there is
 some configuration or mapping missing? I could not find any hints in
 Rudy's
 code.

 Only if I leave out the check for !metaDataResult.isEmpty() it is working,
 the setting of the attribute required is done in

 org.apache.myfaces.extensions.validator.beanval.HtmlCoreComponentsComponentI
 nitializer since the super call isComponentRequired(UIComponent) returns
 true what is not based on the annotations but on other component
 attributes
 like not being disabled nor being readonly.

 Can you took another look into this?

 Thank you.

 Tom



  -Ursprüngliche Nachricht-
  Von: Rudy De Busscher [mailto:rdebussc...@gmail.com]
  Gesendet: Mittwoch, 28. April 2010 12:00
  An: MyFaces Discussion
  Betreff: Re: ExtVal: Rendering component with visual indication for
  required fields
 
  Tom,
 
  I quickly assembled the add-on I was thinking about a few months ago.
  You
  can find it here (1)
 
  If you check out the code and do a mvn install in the requiredLabel
  directory, the add-on is locally available.
 
  You then can use it in your project by including following dependency
  in
  your POM.
  dependency
  groupIdsandbox890.extensions.validator.addon/groupId
  artifactIdrequired-label/artifactId
 
  version1.2.3-SNAPSHOT/version
  /dependency
 
  It summarizes the discussions we had here how you could implement the
  requirement of showing a marker.  I did a quick test with the @Required
  annotation and it works as expected.  The Bean validation annotations
  should
  also work.
 
  (1) http://sandbox890.googlecode.com/svn/trunk/addons
 
  regards
  Rudy.
 
 
  On 28 April 2010 00:55, Gerhard Petracek gerhard.petra...@gmail.com
  wrote:
 
   hi tom,
  
   some additions:
  
   first of all: thx for your questions. such questions allow us to
  improve
   the
   documentation!
   (+ usually there is a simple solution provided by extval and you
  don't have
   to care about such extval internals.)
  
   @renderer interceptors:
   the concept allows extval to do all the magic it offers. however,
  usually
   it's an internal concept.
   you just need it e.g. for add-ons (the label support you would like
  to
   implement is such an add-on)
  
   *...@meta-data transformers*
   if you have custom constraints, you normally impl. a meta-data
  transformer
   for each annotation you would like to use for component
  initialization.
   *and that's it.*
   *
   *
   *(in case of bv it's a bit more difficult - e.g.: you have to care
  about
   group validation, composite constraints,...).*
   *
   *
   you can transform information provided by concrete meta-data to a
  generic
   representation.
   e.g. @Size (bv) and @Length (extval) provide the same information. so
  you
   just have to impl. a transformer e.g. for @Size which extracts the
   information.
   as soon as you forward the extracted information to extval, the
  framework
   does the rest (if it knows how to handle the provided information).
  so you
   don't have to care about all the other details and internals.
  
   @component initialization (i just use trinidad as concrete example):
   you just have to impl. a component initializer e.g. for your
  component lib
   if
- you have (input) components which provide special features and the
   components aren't supported by extval (or an extval-add-on).
- you have a new type of meta-data (e.g. if you would like to add

AW: ExtVal: Rendering component with visual indication for required fields

2010-04-27 Thread Tom M.
Hi Gerhard,

what I had already used before asking in the mailing list was:
- ExtVal Core
- BeanValidation (using JSR-303 annotations)
- PropertyValidation (using basic code for custom cross validation
annotation and provided out-of-the-box annotations such as @RequiredIf)
- I did not want to use Trinidad since other component libraries are to be
used in the project.
- I have absolutely no validation code in the html templates (no validator
tags, no required attribute, nothing of that at all), only using annotations
and in consequence separating page structure/layout from validation rules in
the domain objects (also founded in the organization of the development
teams).

This combination works perfect so far: validating the data according to the
annotations, transforming messages und even generating a html maxlength
attribute for @Size.max (nice!).

Since I found it quite hard to understand how ExtVal is working in detail
(even with your hints and links stated), I found a very simple solution that
is working for me:
- I asked myself why do I need a renderer interceptor AND a component
initializer? From my point of view adding the '*' to the label text is more
a question of rendering the label's text. And I could not figure out what
Rudy meant with ... and do the component initialization of this
EditableValueHolder or what to do since I want to change the label not the
input component.
- By obmitting the component initializer, there is no need for meta data and
a transformer...
- I used some code I found in ExtVal classes, especially from ExtValUtils.

So this is my simple (non standard?) solution which works for the @NotNull
annotation:

   public class RequiredLabelRendererInterceptor extends
AbstractRendererInterceptor {

public static final String REQUIRED_SYMBOL = *;

@Override
public void beforeEncodeBegin(FacesContext facesContext, UIComponent
uiComponent, Renderer wrapped) throws IOException {

if (uiComponent instanceof HtmlOutputLabel) {

HtmlOutputLabel labelComp = (HtmlOutputLabel)
uiComponent;
UIComponent inputComp = ...; // find by label
attribute 'for'

MetaDataExtractor extractor =
createMetaDataExtractor();
for (MetaDataEntry entry :
extractor.extract(facesContext, inputComp).getMetaDataEntries()) {
 checkAndHandleRequiredAttribute(labelComp,
entry.getKey()); 
}
}
}

private MetaDataExtractor createMetaDataExtractor() {
return ExtValContext.getContext().getFactoryFinder()

.getFactory(FactoryNames.COMPONENT_META_DATA_EXTRACTOR_FACTORY,
ComponentMetaDataExtractorFactory.class)
.create();
}

private void checkAndHandleRequiredAttribute(HtmlOutputLabel
labelComp, String key) {

if (NotNull.class.getName().equals(key)) {
String label = (String) labelComp.getValue();
if (!label.startsWith(REQUIRED_SYMBOL)) { 

labelComp.setValue(REQUIRED_SYMBOL+labelComp.getValue());
 }
 }
}
   }

A question to:
 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.

Does that mean after configuring the component's attribute 'required' would
be set? I didn't try that. Is there really a need for the component
initialize and initiating the call via
ExtValUtils.configureComponentWithMetaData()?

For my already mentioned @RequiredExactlyOneOf cross validation annotation
(which works fine regarding validation), I managed to render all labels
belonging to the specified attributes via the renderer interceptor. But this
only works if the annotation is defined at the attribute that occurs first
in the html in order to manipulate the labels that are rendered later on.
Possibly there would be a better solution to avoid this tight coupling by
really using ExtVal's infrastructure!?

Tom



 -Ursprüngliche Nachricht-
 Von: Gerhard Petracek [mailto:gerhard.petra...@gmail.com]
 Gesendet: Dienstag, 27. April 2010 00:45
 An: MyFaces Discussion
 Betreff: Re: ExtVal: Rendering component with visual indication for
 required fields
 
 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

Re: ExtVal: Rendering component with visual indication for required fields

2010-04-27 Thread Rudy De Busscher
 configuring the component's attribute 'required' would
 be set? I didn't try that. Is there really a need for the component
 initialize and initiating the call via
 ExtValUtils.configureComponentWithMetaData()?

 For my already mentioned @RequiredExactlyOneOf cross validation annotation
 (which works fine regarding validation), I managed to render all labels
 belonging to the specified attributes via the renderer interceptor. But
 this
 only works if the annotation is defined at the attribute that occurs first
 in the html in order to manipulate the labels that are rendered later on.
 Possibly there would be a better solution to avoid this tight coupling by
 really using ExtVal's infrastructure!?

 Tom



  -Ursprüngliche Nachricht-
  Von: Gerhard Petracek [mailto:gerhard.petra...@gmail.com]
  Gesendet: Dienstag, 27. April 2010 00:45
  An: MyFaces Discussion
  Betreff: Re: ExtVal: Rendering component with visual indication for
  required fields
 
  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/exa
  mples/hello_bean-validation/
  [3]
  https://svn.apache.org/repos/asf/myfaces/extensions/validator/trunk/exa
  mples/feature-set_02/
  [4]
  http://people.apache.org/~gpetracek/myfaces/extval/extval_chapter.htmlhttp://people.apache.org/%7Egpetracek/myfaces/extval/extval_chapter.html




Re: ExtVal: Rendering component with visual indication for required fields

2010-04-27 Thread Gerhard Petracek
 to the UIComponent just before rendering.  But the interceptor
 is also responsible for coordination of the validation after a decode is
 done.

 In your case, a label has nothing to decode so there is no need to have
 this
 separation.

 Hopes this clarifies a bit.

 regards
 Rudy.

 On 27 April 2010 21:25, Tom M. mynewsgro...@arcor.de wrote:

  Hi Gerhard,
 
  what I had already used before asking in the mailing list was:
  - ExtVal Core
  - BeanValidation (using JSR-303 annotations)
  - PropertyValidation (using basic code for custom cross validation
  annotation and provided out-of-the-box annotations such as @RequiredIf)
  - I did not want to use Trinidad since other component libraries are to
 be
  used in the project.
  - I have absolutely no validation code in the html templates (no
 validator
  tags, no required attribute, nothing of that at all), only using
  annotations
  and in consequence separating page structure/layout from validation rules
  in
  the domain objects (also founded in the organization of the development
  teams).
 
  This combination works perfect so far: validating the data according to
 the
  annotations, transforming messages und even generating a html maxlength
  attribute for @Size.max (nice!).
 
  Since I found it quite hard to understand how ExtVal is working in detail
  (even with your hints and links stated), I found a very simple solution
  that
  is working for me:
  - I asked myself why do I need a renderer interceptor AND a component
  initializer? From my point of view adding the '*' to the label text is
 more
  a question of rendering the label's text. And I could not figure out what
  Rudy meant with ... and do the component initialization of this
  EditableValueHolder or what to do since I want to change the label not
 the
  input component.
  - By obmitting the component initializer, there is no need for meta data
  and
  a transformer...
  - I used some code I found in ExtVal classes, especially from
 ExtValUtils.
 
  So this is my simple (non standard?) solution which works for the
 @NotNull
  annotation:
 
public class RequiredLabelRendererInterceptor extends
  AbstractRendererInterceptor {
 
 public static final String REQUIRED_SYMBOL = *;
 
 @Override
 public void beforeEncodeBegin(FacesContext facesContext,
 UIComponent
  uiComponent, Renderer wrapped) throws IOException {
 
 if (uiComponent instanceof HtmlOutputLabel) {
 
 HtmlOutputLabel labelComp = (HtmlOutputLabel)
  uiComponent;
 UIComponent inputComp = ...; // find by label
  attribute 'for'
 
 MetaDataExtractor extractor =
  createMetaDataExtractor();
 for (MetaDataEntry entry :
  extractor.extract(facesContext, inputComp).getMetaDataEntries()) {
 
 checkAndHandleRequiredAttribute(labelComp,
  entry.getKey());
 }
 }
 }
 
 private MetaDataExtractor createMetaDataExtractor() {
 return ExtValContext.getContext().getFactoryFinder()
 
  .getFactory(FactoryNames.COMPONENT_META_DATA_EXTRACTOR_FACTORY,
  ComponentMetaDataExtractorFactory.class)
 .create();
 }
 
 private void checkAndHandleRequiredAttribute(HtmlOutputLabel
  labelComp, String key) {
 
 if (NotNull.class.getName().equals(key)) {
 String label = (String) labelComp.getValue();
 if (!label.startsWith(REQUIRED_SYMBOL)) {
 
  labelComp.setValue(REQUIRED_SYMBOL+labelComp.getValue());
  }
  }
 }
}
 
  A question to:
   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.
 
  Does that mean after configuring the component's attribute 'required'
 would
  be set? I didn't try that. Is there really a need for the component
  initialize and initiating the call via
  ExtValUtils.configureComponentWithMetaData()?
 
  For my already mentioned @RequiredExactlyOneOf cross validation
 annotation
  (which works fine regarding validation), I managed to render all labels
  belonging to the specified attributes via the renderer interceptor. But
  this
  only works if the annotation is defined at the attribute that occurs
 first
  in the html in order to manipulate the labels that are rendered later on.
  Possibly there would be a better solution to avoid this tight coupling by
  really using ExtVal's infrastructure!?
 
  Tom
 
 
 
   -Ursprüngliche Nachricht-
   Von: Gerhard Petracek [mailto:gerhard.petra...@gmail.com]
   Gesendet: Dienstag, 27. April 2010 00:45
   An: MyFaces Discussion
   Betreff: Re: ExtVal: Rendering component with visual indication for
   required fields
  
   hi

ExtVal: Rendering component with visual indication for required fields

2010-04-26 Thread mynewsgroups
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.

Traumziele - von Beschreibung bis Buchung jetzt kompakt auf den Reise-Seiten 
von Arcor.de! http://www.arcor.de/rd/footer.reise


Re: ExtVal: Rendering component with visual indication for required fields

2010-04-26 Thread Rudy De Busscher
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, mynewsgro...@arcor.de 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.

 Traumziele - von Beschreibung bis Buchung jetzt kompakt auf den
 Reise-Seiten von Arcor.de! http://www.arcor.de/rd/footer.reise



Re: ExtVal: Rendering component with visual indication for required fields

2010-04-26 Thread Gerhard Petracek
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/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/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 rdebussc...@gmail.com

 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, mynewsgro...@arcor.de 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.
 
  Traumziele - von Beschreibung bis Buchung jetzt kompakt auf den
  Reise-Seiten von Arcor.de! http://www.arcor.de/rd/footer.reise
 



AW: ExtVal: Rendering component with visual indication for required fields

2010-04-26 Thread Tom M.
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:gerhard.petra...@gmail.com] 
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 rdebussc...@gmail.com

 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, mynewsgro...@arcor.de 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.
 



Re: ExtVal: Rendering component with visual indication for required fields

2010-04-26 Thread Gerhard Petracek
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. mynewsgro...@arcor.de

 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:gerhard.petra...@gmail.com]
 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 rdebussc...@gmail.com

  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

Re: ExtVal: Rendering component with visual indication for required fields

2010-04-26 Thread Gerhard Petracek
short addition:

@ExtValUtils:
i used a local prototype - that's the reason why it didn't work for you.
however, i uploaded a working implementation for trinidad at [1].
it works with the current version (e.g. [2]).

regards,
gerhard

[1] http://people.apache.org/~gpetracek/myfaces/extval/demos/trinidad
[2] http://svn.apache.org/repos/asf/myfaces/extensions/validator/trunk/

http://www.irian.at

Your JSF powerhouse -
JSF Consulting, Development and
Courses in English and German

Professional Support for Apache MyFaces



2010/4/27 Gerhard Petracek gerhard.petra...@gmail.com

 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. mynewsgro...@arcor.de

 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:gerhard.petra...@gmail.com]
 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.javahttps://svn.apache.org/repos/asf/myfaces/extensions/validator/trunk/component-support/trinidad-support/src/main/java/org/apache/myfaces/extensions/validator/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 rdebussc...@gmail.com

  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