Question

J'ai une tâche WebMethods CAF qui a une grosse formulaire avec un bouton Enregistrer et un bouton Soumettre.De nombreux éléments sur la forme ont une validation.L'utilisateur doit pouvoir saisir une sauvegarde et avoir le formulaire soumis au modèle d'extrémité arrière afin qu'il puisse être enregistré en tant que données de tâche, sans validation de tir.Frapper Soumettre devrait déclencher la validation.

Comment puis-je configurer la page pour le faire?C'est une telle exigence normale et je suis coincé!

Était-ce utile?

La solution

Ce n'est pas très amusant.

  1. Donnez votre bouton de sauvegarde un joli identifiant.Dis, sauvegardebutton
  2. Créez un getter dans votre code Java qui renvoie un booléen.À l'intérieur, retournez vrai si l'ID du bouton est l'un des champs soumis, sinon faux:

    private boolean validationRequired() {
        return mapValueEndsWith((Map<String, String>)getRequestParam(),
            new String[] {
                "saveButton",           // Your save button
                "anotherButton",        // Perhaps another button also shouldn't validate
                "myForm:aThirdButton"   // perhaps you want to be specific to a form
            });
    }
    
  3. Dans tous les champs nécessaires, sauf sur Enregistrer, lier l'attribut validation-> requis à votre getter validationRequiitée.

  4. C'est ça!Très fastidieux avec beaucoup de champs à l'écran, mais ça marche.

    P.s.Qu'est-ce que mapvalueendswith?Juste un utilitaire;Espace retiré pour l'amour de la compacité:

    private boolean mapValueEndsWith(Map<String, String> haystack, String[] needles) {
        for(String needle : needles) if(mapValueEndsWith(haystack, needle)) return true;
        return false;
    }
    
    private boolean mapValueEndsWith(Map<String, String> haystack, String needle) {
        for(String value : haystack.values()) if(value.endsWith(needle)) return true;
        return false;
    }
    

Autres conseils

Comme je vois que l'approche fournie, ne fonctionne que si le formulaire contient uniquement des champs de type chaîne.S'il y a d'autres types de données tels que Integer, Float, le temps de données est mappé sur les champs d'interface utilisateur et la conversion est utilisé, cela peut échouer si des données erronées sont entrées dans ces champs.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top