Thanks.
Aaron Sheffey wrote:
>No - you don't need to add anything to the custom validator method.
>However, in whatever code you are using to parse your validation results
>and display the return messages, you need to 1) grab the custom message
>from the field, if there is one, and if not, then to 2) grab the message
>from the default list in the properties file. Here's an example:
>
><> indicates pseudo-code
>
>String message = <the ValidatorResult of the current
>property>.getField().getMsg( <the ValidatorAction grabbed from the Map of
>the current propery's actions> );
>try
>{
> // If there was no message, grab the default message from the
>global resource
> if ( message == null ) message = <ResourceBundle>.getString(
>action.getMsg() );
>}
> catch ( Exception e )
>{
> // log the resource exception here - you should have a message for
>every validator method
>}
>
>
>
>
>David Duff <[EMAIL PROTECTED]>
>08/30/2005 12:50 PM
>Please respond to
>"Jakarta Commons Users List" <[email protected]>
>
>
>To
>Jakarta Commons Users List <[email protected]>
>cc
>
>Subject
>Re: [Validator] Commons Validator problem
>
>
>
>
>
>
>Hi,
>
>Thanks for all replies up to now and your patience :).
>
>Here is the validateMinLength method in my custom validator
>
>public static boolean validateMinLength(Object bean, Field field)
> {
> // Get value that the user has entered.
> String value =
> ValidatorUtils.getValueAsString(bean, field.getProperty());
>
> // Get the minlength var value from validation.xml
> String minLength = field.getVarValue("minlength");
>
> // Convert value to int for minLength() method.
> int minValue = Integer.parseInt(minLength);
>
> // Compare value to min length value allowed.
> boolean result = GenericValidator.minLength(value,minValue);
> return result;
> }
>
>I realise that a should be using the formatInt() method to convert the
>string to int but if you could ignore that for now.
>
>Should I be reading the resource and name attributes from args and msg
>in this method and setting them within a message class to get them work
>within my application?
>
>Thanks in advance,
>David
>
>Aaron Sheffey wrote:
>
>
>
>>We output custom messages all the time with no issue, as follows:
>>
>><field property="some_field_name" depends="mask">
>> <arg key="some_field_name"/>
>><var><var-name>mask</var-name><var-value>^some_mask$</var-value></
>>var>
>> <msg name="mask" key="Some Field Name must be \'some_mask\'."
>>resource="false" />
>></field>
>>
>>
>>
>>
>>David Duff <[EMAIL PROTECTED]>
>>08/30/2005 12:14 PM
>>Please respond to
>>"Jakarta Commons Users List" <[email protected]>
>>
>>
>>To
>>Jakarta Commons Users List <[email protected]>
>>cc
>>
>>Subject
>>Re: [Validator] Commons Validator problem
>>
>>
>>
>>
>>
>>
>>Hi,
>>
>>Not using struts, using commons-validator.
>>
>>David
>>
>>Niall Pemberton wrote:
>>
>>
>>
>>
>>
>>>The message handling will be in your custom validator - so without
>>>
>>>
>seeing
>
>
>>>how thats working its impossible to know why this isn't working for you.
>>>
>>>Are you using this with Struts? If so, does the *standard* struts
>>>
>>>
>>>
>>>
>>minlength
>>
>>
>>
>>
>>>validator work properly?
>>>
>>>Niall
>>>
>>>----- Original Message -----
>>>From: "David Duff" <[EMAIL PROTECTED]>
>>>Sent: Tuesday, August 30, 2005 4:52 PM
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>>Hi
>>>>
>>>>I am baffled to why the name and resource attributes in the arg and msg
>>>>seem not to work in my application. Surely someone has used validator
>>>>with a second argument, overridden the default message, or set resource
>>>>to false in their configuration. I was thinking that the problem I
>>>>
>>>>
>have
>
>
>>>>was of my making.
>>>>
>>>>Can someone please tell me why these attributes won't work on my
>>>>application? All the information that you will need is below:
>>>>
>>>>Thanks in advance,
>>>>David
>>>>
>>>>David Duff wrote:
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>>Hi,
>>>>>
>>>>>That doesn't work for me. It keeps printing out the message I defined
>>>>>in validation-rules.xml minus the second arg because it is not defined
>>>>>anymore.
>>>>>
>>>>><validator
>>>>> name="minlength"
>>>>>classname="com.company.product.controller.validator.CustomValidator"
>>>>> method="validateMinLength"
>>>>> methodParams="java.lang.Object,
>>>>> org.apache.commons.validator.Field"
>>>>> *msg="errors.min"*/>
>>>>>
>>>>>Is there any way to override this message with the one in
>>>>>
>>>>>
>>>>>
>>>>>
>>validator.xml?
>>
>>
>>
>>
>>>>><msg name="minlength" key="My Message" resource="false" />
>>>>>
>>>>>Thanks in advance,
>>>>>DAvid
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>Aaron Sheffey wrote:
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>>If you want to print out a specific message for the validation, you
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>can
>>
>>
>>
>>
>>>>>>add that to the field, too:
>>>>>>
>>>>>><field property="username" depends="required,minlength">
>>>>>> <arg key="username"/>
>>>>>> <var><var-name>minlength</var-name><var-value>6</var-value></var>
>>>>>> <msg name="minlength" key="The minimum length for the User Name
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>is
>>>
>>>
>>>
>>>
>>>
>>>
>>>>>>6" resource="false" />
>>>>>></field>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>David Duff <[EMAIL PROTECTED]>
>>>>>>08/24/2005 12:09 PM
>>>>>>Please respond to
>>>>>>"Jakarta Commons Users List" <[email protected]>
>>>>>>
>>>>>>
>>>>>>To
>>>>>>Jakarta Commons Users List <[email protected]>
>>>>>>cc
>>>>>>
>>>>>>Subject
>>>>>>Re: Commons Validator problem
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>Hi,
>>>>>>
>>>>>>Thanks for the reply
>>>>>>
>>>>>>The msg I want to print out has two arguments:
>>>>>>
>>>>>>errors.min=The {0} must have at least {1} characters.
>>>>>>
>>>>>>This would leave:
>>>>>>
>>>>>>The user name must have at least {1} characters.
>>>>>>
>>>>>>I can get round the problem I'm having by specifying a value in the
>>>>>>resource like
>>>>>>
>>>>>><field property="username" depends="required,minlength">
>>>>>> <arg key="user.username" position="0"/>
>>>>>> <arg key="user.min" position="1"/>
>>>>>>
>>>>>><var><var-name>minlength</var-name><var-value>6</var-value></var>
>>>>>>
>>>>>></field>
>>>>>>
>>>>>>properties file:
>>>>>>user.min= 6
>>>>>>
>>>>>>I would like to do it like it was specified in the user guides
>>>>>>
>>>>>>
>instead
>
>
>>>>>>of intoducing a workaround and having to input the value twice. Once
>>>>>>
>>>>>>
>
>
>
>>>>>>
>>>>>>
>>in
>>
>>
>>
>>
>>>>>>the resource and another in the validator.xml.
>>>>>>
>>>>>>Thanks in advance.
>>>>>>David
>>>>>>
>>>>>>Aaron Sheffey wrote:
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>>You probably don't need to specify all the other stuff in the field.
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>Based
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>>on what I have done with mask, do something like
>>>>>>>
>>>>>>><field property="username" depends="required,minlength">
>>>>>>> <arg key="username"/>
>>>>>>><var><var-name>minlength</var-name><var-value>6</var-value></var>
>>>>>>></field>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>David Duff <[EMAIL PROTECTED]>
>>>>>>>08/24/2005 11:43 AM
>>>>>>>Please respond to
>>>>>>>"Jakarta Commons Users List" <[email protected]>
>>>>>>>
>>>>>>>
>>>>>>>To
>>>>>>>[email protected]
>>>>>>>cc
>>>>>>>
>>>>>>>Subject
>>>>>>>Commons Validator problem
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>Hi,
>>>>>>>
>>>>>>>I am trying to specify a min. length for a user name field in my
>>>>>>>application.
>>>>>>>
>>>>>>>In my validatior.xml I have specified:
>>>>>>>
>>>>>>>|<field property="username" depends="required,minlength">
>>>>>>><arg key="user.username" position="0"/>
>>>>>>><arg name="minlength" key="${var:minlength}" resource="false" ||
>>>>>>>position="1"||/>
>>>>>>><var><var-name>minlength</var-name><var-value>6</var-value></var>
>>>>>>></field>
>>>>>>>
>>>>>>>In my validator-rules.xml I have:
>>>>>>>
>>>>>>><validator
>>>>>>> name="minlength"
>>>>>>>classname="com.company.product.controller.validator.CustomValidator"
>>>>>>> method="validateMinLength"
>>>>>>> methodParams="java.lang.Object,
>>>>>>> org.apache.commons.validator.Field"
>>>>>>> msg="errors.min"/>
>>>>>>>
>>>>>>>In my custom validator I have my validateMinLength() method.
>>>>>>>
>>>>>>>I would expect the two arguments (user.username and minlength) to
>>>>>>>
>>>>>>>
>get
>
>
>>>>>>>picked up but it only picks up the first argument even though ||I
>>>>>>>
>>>>>>>
>can
>
>
>>>>>>>see the two args in the field object||. When I remove the name
>>>>>>>attribute from arg, it will then pick up the second argument but
>>>>>>>
>>>>>>>
>look
>
>
>>>>>>>for the key in the resource even although resource is set to false.
>>>>>>>
>>>>>>>I am using commons-validator-1.1.4.jar|
>>>>>>>
>>>>>>>Can anyone tell me what I'm doing wrong?
>>>>>>>
>>>>>>>Thanks in advance.
>>>>>>>David
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>---------------------------------------------------------------------
>>>To unsubscribe, e-mail: [EMAIL PROTECTED]
>>>For additional commands, e-mail: [EMAIL PROTECTED]
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>---------------------------------------------------------------------
>>To unsubscribe, e-mail: [EMAIL PROTECTED]
>>For additional commands, e-mail: [EMAIL PROTECTED]
>>
>>
>>
>>
>>
>>------------------------------------------------------------------------
>>
>>No virus found in this incoming message.
>>Checked by AVG Anti-Virus.
>>Version: 7.0.344 / Virus Database: 267.10.17/84 - Release Date:
>>
>>
>29/08/2005
>
>
>>
>>
>
>
>---------------------------------------------------------------------
>To unsubscribe, e-mail: [EMAIL PROTECTED]
>For additional commands, e-mail: [EMAIL PROTECTED]
>
>
>
>
>
>------------------------------------------------------------------------
>
>No virus found in this incoming message.
>Checked by AVG Anti-Virus.
>Version: 7.0.344 / Virus Database: 267.10.17/84 - Release Date: 29/08/2005
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]