événement lien de validation des bandes de déclenchement qui est incorrect
-
25-09-2019 - |
Question
Je bandes: balise de lien dans une jsp avec un attribut d'événement:
<stripes:link href="${actionBean.context.currentStage.stripesForwardAction}" addSourcePage="true" event="showTab2Link">
Cela déclenche la validation pour déclencher sur les propriétés imbriquées:
@ValidateNestedProperties({
@Validate(field="county", required=true, minlength=2, maxlength=2, mask="\\d\\d"),
@Validate(field="parish", required=true, minlength=3, maxlength=3, mask="\\d\\d\\d"),
@Validate(field="holding", required=true, minlength=4, maxlength=4, mask="\\d\\d\\d\\d")
})
Mais cela fait bien si les valeurs réelles, il est la validation ne sont pas présents, mais ils sont présents dans le code HTML et lors du débogage du grain.
Pourquoi les rayures: lien
ce déclencheur
Si je change à un rayures. Présenter alors il est bien
merci,
Dave
La solution
La raison pour laquelle il est déclenchée parce que les bandes: soumettre doit avoir les champs du formulaire, de sorte que ces champs sont transmis au serveur lorsque le formulaire est soumis. Avec le lien, vous ne recevez pas de champs à moins que vous les ajouter en tant que paramètres de lien.
Vous pouvez résoudre ce problème de deux manières, selon:
Voulez-vous les champs présents sur le haricot lorsque le lien est cliqué? Ensuite, vous aurez besoin pour remplir le lien avec les params donc ils vont ajouter un style chaîne de requête GET:
<stripes:link href="${actionBean.context.currentStage.stripesForwardAction}" addSourcePage="true" event="showTab2Link">
<stripes:param name="county" value="${actionBean.county}" />
<stripes:param name="parish" value="${actionBean.parish}" />
<stripes:param name="holding" value="${actionBean.holding}" />
link text
</stripes:link>
Par contre, si vous ne les avez pas besoin dans votre haricot pour cet événement, vous pouvez dire à vos @ValidateNestedProperties ignorer cet événement:
@ValidateNestedProperties({
@Validate(field="county", on="!showTab2Link", required=true, minlength=2, maxlength=2, mask="\\d\\d"),
@Validate(field="parish", on="!showTab2Link", required=true, minlength=3, maxlength=3, mask="\\d\\d\\d"),
@Validate(field="holding", on="!showTab2Link", required=true, minlength=4, maxlength=4, mask="\\d\\d\\d\\d")
})
Ensuite, la validation ne sera pas exécuté sur le showTab2Link de l'événement à moins qu'il a effectivement été fourni.