hi johan, >@Validator besides @Validator you can implement an annotation + an adapter [1] for your existing jsf validators which need special attributes.
>"required"-attribute by default extval shouldn't modify the "required"-attribute (if you don't use a component lib which offers e.g. client-side validation (like trinidad)). however, some add-ons for dynamic validation (e.g. bypassing validation,...) have to reset the "required"-attribute in combination with component initialization. imo we should see a release of the mentioned add-on quite soon. i'll check (before the release) if the add-on follows the default approach of extval. regards, gerhard [1] http://jsfcentral.com/articles/myfaces_extval_3.html http://www.irian.at Your JSF powerhouse - JSF Consulting, Development and Courses in English and German Professional Support for Apache MyFaces 2010/4/16 Rudy De Busscher <[email protected]> > Johan > > Do I understand that if I use the DEACTIVATE_COMPONENT_ > > > > INITIALIZATION with > > value true I do disable the JSF validation at all in favor of the ExtVal > > validation? > > > The other way around. With that parameter set to true, ExtVal doesn't > touch > the 'classic' attributes of the components in the tree like required and > maxLength. So JSF validation runs unaltered, after the ExtVal validation. > > But it is much better and easier to go ExtVal all the way. If you have > custom JSF validators written, you can reuse them with the @Validator > annotation. > > About the properties file, I'll try to recreate the situation and try to > find a solution. > > Rudy > > > On 16 April 2010 14:52, Johan.borchers <[email protected]> wrote: > > > Hello Rudy and others. > > > > Thanks for the answers . > > > > Q1 > > Disappearing of the field value with JSF validation only appears if I > > first submit the form with 3 invalid fields and the JSF validation is > > triggered. After that the field is not updated anymore by selecting a row > > from the list. Only after pushing the refresh button of the browser > > restores the normal behavior. Maybe it's also something of RichFaces > > because clicking on the list an refreshing the detail panel is done by > > AJAX. > > > > But if you say just go all the way with ExtVal than the problem will > > disappear. > > Oke if I do understand, the required attribute of JSF is never working > > because Extval overrides it. > > The other JSF validators should do their work but it's better to go all > > the way with Extval. > > > > Do I understand that if I use the DEACTIVATE_COMPONENT_INITIALIZATION > with > > value true I do disable the JSF validation at all in favor of the ExtVal > > validation? > > > > Q2 > > My Messages_nl_NL.properties file is my dutch replacement of the standard > > Messages_xx_XX.properties files delivered by Mojarra. I put this file in > > the default package (root) of my webapp classes. > > > > In the faces-config.xml file I have the following elements: > > <locale-config> > > <default-locale>nl_NL</default-locale> > > </locale-config> > > and > > <message-bundle>Messages</message-bundle> > > > > If I put the ExtVal libraries in the Tomcat lib directory Extval can't > > find the resource bundle. > > Even if I try to use the CUSTOM_MESSAGE_BUNDLE context-param to point to > > the messages bundle. > > > > After putting the ExtVal libraries in WEB-INF/lib my dutch messages are > > loaded even without setting the CUSTOM_MESSAGE_BUNDLE context-param. > > > > At this moment I'm not able to show this app in the internet. > > But it's a good idea to work on that because looking at the app is > > sometimes better than 1000 words. > > > > Regards Johan > > > > >Hi Johan, > > > > > >Q1 > > >Yes, you can combine the JSF validation with ExtVal, like you already > > >found > > >out since you got 3 messages, 2 of extval and one of JSF. > > >Although, the idea is that you do everything with ExtVal. You can use > > >@Length as a replacement for the f:validateLength tag. > > > > > >Except for the required attribute of the components. This required > > >attribute > > >is overwritten by the ExtVal code based on the annotations it find on > the > > >property. (so when no annotations set, attribute shouldn't be altered) > > > > > >You can deactivate that behaviour by specifying the web context > parameter > > > <context-param> > > > > > > > > ><param-name>org.apache.myfaces.extensions.validator.DEACTIVATE_COMPONENT_INITIALIZATION</param-name> > > > <param-value>true</param-value> > > > </context-param> > > > > > >You also loose then some functionality related to the validation of > empty > > >fields (like specified in the JSF 2.0 spec for example > > >javax.faces.VALIDATE_EMPTY_FIELDS) > > > > > >The parameter can be of help about the problem of the value that > > >disappears. > > >I can't see any reason why the f:validateLength tag impacts the display > of > > >the field value. By using the web context parameter, we make sure the > > >annotation based bypass validation add-on can't interfere with the > > >encoding > > >of the page (and thus preventing the display of the field) > > > > > >I tried to recreate you problem with that but had no luck. > > > > > >Q2 > > >This could be a classloading problem of Tomcat. > > >Which of the parameters in web.xml did you try, > > >JPA_VALIDATION_ERROR_MESSAGES or CUSTOM_MESSAGE_BUNDLE > > > > > >But you also say that, when ExtVal Libraries placed in WEB-INF/lib you > > >don't > > >need to specify any parameter and all messages are displayed correctly. > > >So > > >which messages have you placed in the properties file that are related > to > > >ExtVal. > > > > > >Regards > > >Rudy. > > > > > >On 16 April 2010 08:52, Johan Borchers <[email protected]> > wrote: > > > > > >> Hello, > > >> > > >> I'm using Tomcat 6.0.20, Mojarra 1.2_14, RichFaces 3.3.3 and Extval > > >> 1.2.3 > > >> on Mac en Windows with Java 1.6.0_17 > > >> The Extval libs are: > > >> extval-annotation-based-bypass-validation-1.2.3.jar > > >> myfaces-extval-core-1.2.3.jar > > >> myfaces-extval-generic-support-1.2.3.jar > > >> myfaces-extval-property-validation-1.2.3.jar > > >> > > >> Extval is helping me al lot with bypass-validation because of fields > in > > >> a > > >> form that perform looking up values. > > >> E.g. a manufacturer code field is required in the big picture. But the > > >> field is also performing an AJAX lookup of the manufacturer as you > leave > > >> the > > >> field. At that moment it is legal to leave the field blank because you > > >> are > > >> just tabbing through your fields. So marking the lookup method with > > >> @BypassValidation(all = true) works perfect. > > >> > > >> Question 1 : > > >> Is it possible to use also the normal validation mechanism of JSF in > > >> combination with Extval? > > >> > > >> E.g I have 3 fields on a form with 2 fields having Extval @required > > >> validation and one field has the traditional validation property > > >> required="true" in the XHTML page. > > >> Sending the form with 3 blank fields gives me 2 faces messages back. > > >> Only > > >> the messages due to Extval validation. > > >> So for me it looks like Extval is disabling the JSF validation defined > > >> in > > >> the XHTML page. > > >> > > >> A little bit more strange is the behavior of the one field without > > >> Extval > > >> validation if I'm adding a validation to the field like > > >> <f:validateLength > > >> minimum="2" maximum="10"/> > > >> If I send the form with one character in the field and the 2 other > > >> fields > > >> are left blank I receive 3 faces messages (that's nice). > > >> And then after retrieving the records from the database showing up in > a > > >> list clicking on the list fills normally all three fields in the form, > > >> but > > >> with the f:validateLength the field is left blank. > > >> Removing the f:validateLength from the field gives be back the normal > > >> behavior showing the data from the database. > > >> > > >> > > >> Question 2 : > > >> Where to place the Extval libraries? > > >> > > >> For developing I'm using 1 Tomcat installation per project. I do add > all > > >> the libraries to the lib directory of Tomcat. Placing also the Extval > > >> libraries to this directory has a little problem. > > >> If i'm setting my locale to nl_NL and have a Messages_nl_NL.properties > > >> in > > >> my root package Mojarra will find it and Extval not. I do get the > > >> missing > > >> resource exception. > > >> Even using the special parameter in web.xml giving a hint to Extval > > >> finding > > >> the message bundle does not help. > > >> But I thought that has something to to with the classloader. I decided > > >> to > > >> place just the Extval libraries in the WEB-INF/lib directory. After > that > > >> Extval is finding my locale specific message bundle perfectly even > > >> without > > >> the hint in web.xml. > > >> I know it is better to place all third party libs in WEB-INF/lib as of > > >> class loading but during development redeploying the web app a lot of > > >> times > > >> gives problems with e.g. reloading Mojarra. > > >> > > >> > > >> So that's a lot of text for few questions! > > >> > > >> I want to use Extval because of the flexible validation options. I > hope > > >> someone can answer my questions so I will better understand how to use > > >> Extval? > > >> > > >> T.I.A. > > >> > > >> Johan Borchers > > > > > > >

