Bonjour,
Je viens poster un nouveau sujet de discussion car je suis actuellement confronté à un problème.
Dans mon projet J2EE, j'ai fais une montée de version du Framework Struts 2. Je suis passé de la version 2.1.8 à la version 2.3.4.1
Cependant lors de mes tests de non-reg sur mon application, je constate que la validation de formulaire via Ajax Validation ne fonctionne plus dutout...
Je ne comprend pas pourquoi ... 


Ce que j'ai constaté c'est que lorsque je fais mon appel Ajax à mon action avec le paramêtre suivant
struts.enableJSONValidation=true
dans mon URL, si un ou plusieurs champs de mon formulaire et en erreurs je passe toujours dans le success de mon appel ajax qui est fait via Jquery.
Avec la version 2.1.8, lorsque un ou plusieurs champs de mon formulaire était en erreur, je passé bien dans la méthode error de l'appel Ajax...
Voici mon cas de test :
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
|
<script type="text/javascript">
function testValidation(){
var testUrl = "<s:url action='isValid'/>";
var myUrl = testUrl + "?struts.enableJSONValidation=true";
var formId = '#formToBeValidated';
var postData = $(formId).serialize();
$.ajax({
type: "POST",
url: myUrl,
dataType: 'json',
cache : false,
global: false,
data: postData,
success:
function(responseData) {
clearErrors(formId);
if (responseData.em != null) {
.....
}
},
error:
function(responseData) {
clearErrors(formId);
//get errors from response
var text = responseData.responseText;
var errorsObject = getValidationErrors(text);
//show errors, if any
if(errorsObject.fieldErrors) {
$('#errors').show();
$.each(errorsObject.fieldErrors, function(i, error){
$('#'+i).parent().addClass('error');
$('#'+i).parent().children(':first-child').before('<p class="required">'+error+'</p>');
});
}
}
});
}
...
</script>
</head>
<body>
<s:form id="formToBeValidated" action="isValid" method="post" name="formToBeValidated">
<s:textfield id="name" name="name" required="true"></s:textfield>
<s:textfield id="pwd" name="pwd" required="true"></s:textfield>
</s:form>
<button id="validation" onclick="testValidation();">valider</button>
</body> |
1 2 3 4 5 6 7 8 9
|
@Validations(requiredStrings = { @RequiredStringValidator(fieldName = "name", key = "required.firstName",
shortCircuit = true), @RequiredStringValidator(fieldName = "pwd", key = "required.pwd",
shortCircuit = true) })
public String isValid() {
em = "error message";
return SUCCESS;
} |
Est-ce que quelqu'un pourrait m'aider à ce sujet s'il vous plait ??
Ps: Pour faire la validation de mon formulaire, j'utilise la validation par annotation dans la class Action. Et voici mon interceptor :
1 2 3 4 5 6 7 8 9 10
|
<interceptor-stack name="jsonValidationWorkflowStackForTest">
<interceptor-ref name="basicStack"/>
<interceptor-ref name="validation">
<param name="validateAnnotatedMethodOnly">true</param>
<param name="excludeMethods">input,back,cancel</param>
</interceptor-ref>
<interceptor-ref name="jsonValidation"/>
<interceptor-ref name="workflow"/>
</interceptor-stack> |
Je vous remercie pour votre aide
Partager