Hi Adam Hi Adam
On Wed, Apr 13, 2011 at 5:19 PM, Adam Zimowski <zimowsk...@gmail.com> wrote: > Hi Taha, > > > You are still not getting the point... > > Why so direct, having a bad day? Please tell me how am I not getting > the point when I clearly wrote that: > > Sorry if it appeared rude, that was certainly not my intention (In my defense, English is not my first language). I think it should have been "you are missing the point" :) > <t:radiogroup validate="required"> > > Works. The validate parameter is not null with the above, and the > Radio group works as expected, as shown in RadioGroup > processSubmission(): > > if (validate != null) > fieldValidationSupport.validate(rawValue, resources, validate); > > > I think you are missing the point. I realized that validate parameter > in RadioGroup is null when @Validate on the bean is present and so > validation does not get triggered. > > If this is a bug, which we both seem to agree, rather than stating the > obvious, I would be interested (due to lack of expertise in Tapestry) > where in the source does Tapestry read a @Validate annotation off a > bean field, and interprets it accordingly. > > That I mentioned in my last mail > The RadioGroup does not seem to be the problem, and the if statement > it contains to test nullability of the validate parameter is not the > issue, either. > > RadioGroup is the problem as it does not contain defaultValidate(){ return defaultProvider.defaultValidatorBinding("value", resources); } If it was there the defaultProvider(as I already mentioned in my previous mail) with indirectly take care of the case where validate @Parameter is null > Regards, > Adam > > > Sorry again regards Taha On Wed, Apr 13, 2011 at 6:30 AM, Taha Hafeez <tawus.tapes...@gmail.com> > wrote: > > You are still not getting the point... > > > > > > 1. fieldValidationSupport,validate is the service responsible for > validating > > a field. It requries a FieldValidator which is passed as a parameter to > it. > > If this @Parameter validate is null, as is the case with RadioGroup, > > fieldValidationSupport is never called as the source shows > > > > if (validate != null) > > fieldValidationSupport.validate(rawValue, resources, validate); > > > > 2. In other components like Select, if @Parameter validate is not > provided a > > default is chosen. The default is provided by ComponentDefaultProvider > which > > in turn calls FieldValidatorDefaultProvider which uses > FieldValidatorSource > > for creating default validators based on the field annotations and type. > > > > in case of Select we have default validate like this > > > > Binding defaultValidate() > > { > > return defaultProvider.defaultValidatorBinding("value", > resources); > > } > > > > so if we don't provide a validate, the default is chosen > > > > > > Now in a RadioGroup as the code does not use a default in case @Parameter > > validate is not provided, the field annotations are not taken into > > consideration > > > > regards > > Taha > > > > On Wed, Apr 13, 2011 at 4:24 PM, Adam Zimowski <zimowsk...@gmail.com> > wrote: > > > >> Hi Taha - > >> > >> I agree with you it seems to be a bug, and I (think) I get what you are > >> saying. > >> > >> However, I am having a hard time seeing why the bug would be in > >> RadioGroup processSubmission() or anywhere in the RadioGroup class for > >> that matter. > >> > >> Rather, it seems the bug (if exists) is deeper in the chain, where the > >> @Validate annotation is read off of a bean and applied to a > >> RadioGroup. > >> > >> I believe this because RadioGroup *does* behave correctly if TML > defines: > >> > >> <t:radiogroup validate="required"> > >> > >> but now when the @Validate("required") is on the bean. > >> > >> Adam > >> > >> > >> On Wed, Apr 13, 2011 at 5:35 AM, Taha Hafeez <tawus.tapes...@gmail.com> > >> wrote: > >> > it is the @Parameter validate in RadioGroup that is required not > >> @Validate > >> > as that is never checked in case @Parameter validate is not given in a > >> > RadioGroup ... Please read my answer again :) > >> > > >> > It seems to be bug!! > >> > > >> > regards > >> > Taha > >> > > >> > On Wed, Apr 13, 2011 at 3:40 PM, Adam Zimowski <zimowsk...@gmail.com> > >> wrote: > >> > > >> >> Thanks Taha, but I did supply @Validate("required") annotation and > >> >> validation did not happen. > >> >> > >> >> Adam > >> >> > >> >> On Tue, Apr 12, 2011 at 8:15 PM, Taha Hafeez < > tawus.tapes...@gmail.com> > >> >> wrote: > >> >> > Hi > >> >> > > >> >> > I compared the code from RadioGroup with that of Select and found > the > >> >> > following difference > >> >> > > >> >> > In Select if parameter 'validate' is not given a default is chosen > and > >> so > >> >> it > >> >> > is never null. Validation is performed > >> >> > in processSubmission() method by the line > >> >> > > >> >> > fieldValidationSupport.validate(selectedValue, resources, > validate); > >> >> > > >> >> > > >> >> > In RadioGroup however, there is no defaultValidate(){} and so > validate > >> >> can > >> >> > be null. Now the validation here is done by the line > >> >> > > >> >> > if (validate != null) > >> >> > fieldValidationSupport.validate(rawValue, resources, validate); > >> >> > > >> >> > so when the validate parameter is not supplied, validation does not > >> >> happen. > >> >> > > >> >> > regards > >> >> > Taha > >> >> > > >> >> > > >> >> > On Wed, Apr 13, 2011 at 2:19 AM, Adam Zimowski < > zimowsk...@gmail.com> > >> >> wrote: > >> >> > > >> >> >> I have a bean where @Validate("required") does not work on a > >> >> >> radiogroup, but <t:radiogroup validate="required" ... does. > Other > >> >> >> @Validate annotated fields (TextField's) work. My companyType is > >> >> >> purposely set to null by default, as I do not want any radio > >> >> >> pre-selected, thus it shall be required. > >> >> >> > >> >> >> Is @Validate in the context I have defined supposed to work on the > >> >> >> radio group as well? > >> >> >> > >> >> >> /** > >> >> >> * @author Adam Zimowski > >> >> >> */ > >> >> >> public class RegisterUiBean { > >> >> >> > >> >> >> @Validate("required") > >> >> >> private String email; > >> >> >> > >> >> >> @Validate("required") > >> >> >> private String emailRetype; > >> >> >> > >> >> >> @Validate("required") > >> >> >> private String password; > >> >> >> > >> >> >> @Validate("required") > >> >> >> private String passwordRetype; > >> >> >> > >> >> >> @Validate("required") > >> >> >> private CompanyType companyType; > >> >> >> > >> >> >> > >> >> >> public RegisterUiBean() { > >> >> >> } > >> >> >> > >> >> >> public String getEmail() { > >> >> >> return email; > >> >> >> } > >> >> >> > >> >> >> > >> >> >> public void setEmail(String aEmail) { > >> >> >> email = aEmail; > >> >> >> } > >> >> >> > >> >> >> > >> >> >> public String getEmailRetype() { > >> >> >> return emailRetype; > >> >> >> } > >> >> >> > >> >> >> > >> >> >> public void setEmailRetype(String aEmailRetype) { > >> >> >> emailRetype = aEmailRetype; > >> >> >> } > >> >> >> > >> >> >> > >> >> >> public String getPassword() { > >> >> >> return password; > >> >> >> } > >> >> >> > >> >> >> > >> >> >> public void setPassword(String aPassword) { > >> >> >> password = aPassword; > >> >> >> } > >> >> >> > >> >> >> > >> >> >> public String getPasswordRetype() { > >> >> >> return passwordRetype; > >> >> >> } > >> >> >> > >> >> >> > >> >> >> public void setPasswordRetype(String aPasswordRetype) { > >> >> >> passwordRetype = aPasswordRetype; > >> >> >> } > >> >> >> > >> >> >> > >> >> >> public CompanyType getCompanyType() { > >> >> >> return companyType; > >> >> >> } > >> >> >> > >> >> >> > >> >> >> public void setCompanyType(CompanyType aCompanyType) { > >> >> >> companyType = aCompanyType; > >> >> >> } > >> >> >> > >> >> >> public CompanyType getCorporation() { > >> >> >> return CompanyType.Corporation; > >> >> >> } > >> >> >> > >> >> >> public CompanyType getFederalGov() { > >> >> >> return CompanyType.FederalGovernment; > >> >> >> } > >> >> >> > >> >> >> public CompanyType getStateGov() { > >> >> >> return CompanyType.StateGovernment; > >> >> >> } > >> >> >> > >> >> >> public CompanyType getIndividual() { > >> >> >> return CompanyType.Individual; > >> >> >> } > >> >> >> } > >> >> >> > >> >> >> <div class="kk-hdr">Registration Information</div> > >> >> >> <div class="kk-row"> > >> >> >> <div class="kk-label"><t:label for="r_email1"/> :</div> > >> >> >> <div class="kk-field"><t:textfield t:id="r_email1" > >> >> >> value="registration.email"/></div> > >> >> >> <t:error class="literal:kk-error" for="r_email1"/> > >> >> >> </div> > >> >> >> <div class="kk-row"> > >> >> >> <div class="kk-label"><t:label for="r_email2"/> :</div> > >> >> >> <div class="kk-field"><t:textfield t:id="r_email2" > >> >> >> value="registration.emailRetype"/></div> > >> >> >> <t:error class="literal:kk-error" for="r_email2"/> > >> >> >> </div> > >> >> >> <div class="kk-row"> > >> >> >> <div class="kk-label"><t:label for="r_pass1"/> :</div> > >> >> >> <div class="kk-field"><t:textfield t:id="r_pass1" > >> >> >> value="registration.password"/></div> > >> >> >> <t:error class="literal:kk-error" for="r_pass1"/> > >> >> >> </div> > >> >> >> <div class="kk-row"> > >> >> >> <div class="kk-label"><t:label for="r_pass2"/> :</div> > >> >> >> <div class="kk-field"><t:textfield t:id="r_pass2" > >> >> >> value="registration.passwordRetype"/></div> > >> >> >> <t:error class="literal:kk-error" for="r_pass2"/> > >> >> >> </div> > >> >> >> <div class="kk-row"> > >> >> >> <div class="kk-label"><t:label for="r_type"/> :</div> > >> >> >> <div class="kk-field"> > >> >> >> <t:radiogroup t:id="r_type" value="registration.companyType" > >> >> >> validate="required"> > >> >> >> <t:radio t:id="corporation" > value="registration.corporation"/> > >> >> >> <t:label for="corporation"/> > >> >> >> <t:radio t:id="federalGovernment" > >> >> value="registration.federalGov"/> > >> >> >> <t:label for="federalGovernment"/> > >> >> >> <t:radio t:id="stateGovernment" > >> value="registration.stateGov"/> > >> >> >> <t:label for="stateGovernment"/> > >> >> >> <t:radio t:id="individual" > value="registration.individual"/> > >> >> >> <t:label for="individual"/> > >> >> >> </t:radiogroup> > >> >> >> </div> > >> >> >> > >> >> >> Adam > >> >> >> > >> >> >> > --------------------------------------------------------------------- > >> >> >> To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org > >> >> >> For additional commands, e-mail: users-h...@tapestry.apache.org > >> >> >> > >> >> >> > >> >> > > >> >> > >> >> --------------------------------------------------------------------- > >> >> To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org > >> >> For additional commands, e-mail: users-h...@tapestry.apache.org > >> >> > >> >> > >> > > >> > >> --------------------------------------------------------------------- > >> To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org > >> For additional commands, e-mail: users-h...@tapestry.apache.org > >> > >> > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org > For additional commands, e-mail: users-h...@tapestry.apache.org > >