2010-07-28 13 views
0

J'ai un fichier JSF avec une forme plutôt grande, le formulaire se compose de 3 parties: données utilisateur (ensemble de calendriers et de données), éléments utilisateur (un tableau de données et une petite table avec quelques entrées et un bouton qui ajoute une nouvelle entrée en fonction des informations fournies dans la petite table), d'autres (quelque chose comme des données utilisateur). J'en ai un énorme et chaque partie est imbriquée (parce que par exemple en appuyant sur le bouton "ajouter un élément" je veux le valider).Ignorer un imbriqué <a4j:region>

Mais quand j'appuie sur le bouton "enregistrer" qui est censé gérer toute la forme énorme (toutes les 3 parties) est-il un moyen d'ignorer un seul imbriqué? Parce que lors de l'enregistrement d'un nouvel utilisateur, je n'ai pas vraiment besoin de valider les champs de la table de données utilisée pour ajouter de nouveaux éléments. Donc, fondamentalement donné quelque chose comme:

<h:form> 
<a4j:region> 
    <a4j:region> 
    </a4j:region> 

    <a4j:region id="skipMe"> 
    </a4j:region> 

    <a4j:region> 
    </a4j:region> 
</a4j:region> 
<a4j:commandButton value="Register" action="#{bean.someAction}"/> 
</h:form> 

Est-il possible de sauter la validation de tous les composants de la région avec l'id « skipMe » quand on clique sur le commandButton?

Répondre

0

Peut-être pas la meilleure solution mais j'en ai trouvé une - avant d'utiliser la validation d'annotation JSR303 dans la région skipMe (@NotNull etc.). Maintenant j'utilise simplement l'attribut validator="" dans chaque champ et j'écris mes propres validateurs dans le contrôleur, quand j'appuie sur le bouton "Register" j'ajoute un f:param name="skipValidation" value="true" qui est alors utilisé dans mes validateurs, quand la valeur est true, la validation est sauté. Je suppose que c'est bon pour moi car je devrais écrire des validateurs personnalisés pour ce formulaire de toute façon.

0

Vous pouvez essayer d'utiliser l'attribut processus:

où les points d'identification à un certain panneau (comme h: panelGrid, non de la région). Vous pouvez également lier le processus à une liaison de valeur, mais assurez-vous que la valeur est disponible pendant la phase Appliquer les valeurs de demande.

+0

Salut merci pour la réponse, je serais reconnaissant si vous pouviez le modifier, comme ici à stackoverflow vous devez marquer quelque chose entre <> comme code ou il ne sera pas imprimé;) –

+0

Je n'en ai pas code dans ma réponse. Ce que vous voyez est ma réponse complète. –