[Validator] Validation d'un Integer
Bonsoir à tous...
je veux utiliser la validation des mes formulaire Struts en utlisant le plugin ValidatorPlugIn
donc j'ai déclaré le plugin dans mon fichier de conf :
Code:
1 2 3 4 5
|
<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
<set-property property="pathnames" value="/WEB-INF/validator-rules.xml,
/WEB-INF/validation.xml"/>
</plug-in> |
j'ai créer mes deux fichier .xml dans web-inf :
validator-rules.xml
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82
|
<validator name="integer"
classname="org.apache.struts.validator.FieldChecks"
method="validateInteger"
methodParams="java.lang.Object,
org.apache.commons.validator.ValidatorAction,
org.apache.commons.validator.Field,
org.apache.struts.action.ActionErrors,
javax.servlet.http.HttpServletRequest"
depends=""
msg="errors.integer"
jsFunctionName="IntegerValidations">
<javascript><![CDATA[
function validateInteger(form) {
var bValid = true;
var focusField = null;
var i = 0;
var fields = new Array();
oInteger = new IntegerValidations();
for (x in oInteger) {
var field = form[oInteger[x][0]];
if (field.type == 'text' ||
field.type == 'textarea' ||
field.type == 'select-one' ||
field.type == 'radio') {
var value = '';
// get field's value
if (field.type == "select-one") {
var si = field.selectedIndex;
if (si >= 0) {
value = field.options[si].value;
}
} else {
value = field.value;
}
if (value.length > 0) {
if (!isAllDigits(value)) {
bValid = false;
} else {
var iValue = parseInt(value);
if (isNaN(iValue) || !(iValue >= -2147483648 && iValue <= 2147483647)) {
if (i == 0) {
focusField = field;
}
fields[i++] = oInteger[x][1];
bValid = false;
}
}
}
}
}
if (fields.length > 0) {
focusField.focus();
alert(fields.join('\n'));
}
return bValid;
}
function isAllDigits(argvalue) {
argvalue = argvalue.toString();
var validChars = "0123456789";
var startFrom = 0;
if (argvalue.substring(0, 2) == "0x") {
validChars = "0123456789abcdefABCDEF";
startFrom = 2;
} else if (argvalue.charAt(0) == "0") {
validChars = "01234567";
startFrom = 1;
}
for (var n = 0; n < argvalue.length; n++) {
if (validChars.indexOf(argvalue.substring(n, n+1)) == -1) return false;
}
return true;
}]]>
</javascript>
</validator> |
validation.xml
Code:
1 2 3 4 5 6
|
<form name="searchFullForm">
<field property="productList" depends="integer">
<arg0 key="prompt.productList"/>
</field>
</form> |
et dans mon formulaire j'ai bien :
private Integer productList;
avec ses get et set...
mais voilà ça ne fonctionne pas...
il ne me valide pas mon formulaire...
caractères non numériques
Bonjour
Et bien moi j'ai le même problème et quand je saisi des caractères non numériques dans ma zone, il les prends et à priori la donnée du bean de formulaire est récupérée avec 0.
dans mon validation.xml, j'ai rajouté depends, intRange avec valeur min et valeur max
Si valeur min =1 et que je saisi "A" ça ne passe pas
mais si valeur min = 0 , ça passe