11
votes

PrimeFaces Commandbutton Action non appelée Composite intérieure

Dans le code ci-dessous, l'action JSF HTML Commandbutton est appelée parfaitement. Mais l'action de Commandbutton PremièreFaces n'est pas appelée.

import java.io.Serializable;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;


@ManagedBean
@SessionScoped
public class EditableHTMLText implements Serializable{

    /**
     * 
     */
    private static final long   serialVersionUID    = 8439126615761864409L;

    private String              value               = "Test<br>of<br>HTML<br>text<br><b>ITEM</b><br>";
    private boolean             editing             = false;


    public void toogleEditing(){

        this.setEditing(!this.isEditing());
        System.out.println("Editing State: " + this.editing);
    }


    public String getValue(){

        return value;
    }


    public void setValue(String value){

        this.value = value;
    }


    public boolean isEditing(){

        return editing;
    }


    public void setEditing(boolean editing){

        this.editing = editing;
    }

}


0 commentaires

8 Réponses :


6
votes

Lorsque vous avez utilisé le composant composite, était-il déjà placé dans une balise H: formulaire? Lorsque vous avez des formulaires imbriqués, l'action de bouton de commande n'est pas déclenchée.

Un autre problème peut être les parties AJAX que vous essayez. Le bouton PremierFaces a l'attribut de mise à jour, mais le JSF standard n'a pas cela. Il fera toujours un rafraîchissement complet de la page (sauf lorsqu'il est imbriqué dans ou F: Ajax Tag est utilisé à l'intérieur)


0 commentaires

1
votes

Vous pouvez essayer d'insérer AJAX = "FALSE" Attribut dans P: Commandbutton.


0 commentaires

0
votes

J'ai également appuyé sur ce problème et j'ai testé vos codes, il semble que les principaux favoris ne parviennent pas à avertir des erreurs de validation dans le même "xhtml", mais dans d'autres panelgrids, vous aurez peut-être besoin d'un parent PanelGrid pour encapsuler correctement tous les grilles de votre formulaire.

Si vous remplissez complètement votre formulaire complet, vous verrez que votre action de commande PremierFaces est appelée, sinon elle «digère» silencieusement les erreurs de validation que vous pouvez avoir.


0 commentaires

1
votes

J'ai également eu des problèmes avec des commandes de commande non déclenchantes. Dans mes cas, Ajax et Non-Ajax Reqissests n'ont pas fonctionné. 1. Comme décrit ci-dessus - assurez-vous de supprimer toutes les formulaires de formulaire. Facile fait avec une utilisation composite. 2. Si vous avez plusieurs boutons, essayez d'utiliser le drapeau "processus". Aidé dans mon cas.

<p:commandButton id="submitButton" value="Submit" type="submit" 
    actionListener="#{bean.save}"
    update="message"
    process="txtComment, @this"
    icon="ui-icon-disk"/>


0 commentaires

20
votes

Aujourd'hui, j'ai frappé ce même problème avec Premefaces 5.1. Dans mon cas, je n'avais aucune forme imbriquée et je définissais déjà l'attribut processus sur le p: Commandbutton avec les éléments de formulaire que je voulais être traité. Cependant cela n'a pas encore fonctionné.

La "solution" était d'ajouter @This dans la liste des composants à traiter, comme celui-ci:

sans @Chis (qui n'est généralement pas nécessaire, car le bouton lui-même ne doit pas nécessairement être traité / validé), je n'ai trouvé aucun moyen de faire de ces pour travailler à l'intérieur d'un composite: < / p>

  • AVEC NETHED
  • avec associé

    En débogage de l'application, j'ai vu que les phases de validation et de mise à jour ont été correctement exécutées, mais dans la phase d'application d'invocation, aucun événement en file d'attente n'était présent et aucune action n'a été effectuée. En fait, je pourrais spécifier tout ce que j'ai aimé à l'intérieur du action et ActionListener Attribute de sans avoir les principaux favoris ou JSF se plaindre dans Toute façon.

    Celles-ci, au lieu de cela, fonctionnent comme ils le devraient, mais vous n'avez pas de traitement partiel en place, ils peuvent donc ne pas être une solution viable:

    • avec Netd

      Ce doit être un bug de primesFaces.


4 commentaires

Le bouton n'est pas tiré, s'il n'est pas traité. Ca a du sens.


Comme l'attribut "Process" n'indique pas que les champs Autres doivent être traités / soumis. Le réglage "@Chis" dans l'attribut de processus n'est pas requis pour les boutons situés en dehors d'un composite. Et, si c'était le cas, ce serait au moins "redondant".


J'aimerais pouvoir uppouver cela plus d'une fois. C'est la bonne réponse, ou devrais-je dire @Chis. Même en 2018 sous PremeFaces 6. Jamais eu un problème avec P: le tir de Commandbutton jusqu'à ce que je fixe un sur un composite.


Cela fonctionne vraiment avec les visages de printemps 2.3.1 - Merci beaucoup!



0
votes

Pour ajouter aux réponses ci-dessus, pour la complétude.

L'un des problèmes non couverts dans les réponses ci-dessus est l'attribut manquant dans composite: interface

de la DOCS de JSF

Attribut d'objectifs: Si cet élément a une méthode - Signature attribut, la valeur de l'attribut cible doit être interprétée en tant que Espace (non onglet) Liste séparée des ID clients (par rapport au sommet composant de niveau) des composants dans le Section. L'espace est utilisé comme Délimiteur pour la compatibilité avec les types de données IDREFS et NMTOKENS du schéma XML. Chaque entrée de la liste doit être interprétée comme la ID d'un composant interne à laquelle la méthode exprimée de la La balise composée composée dans l'utilisation de la page doit être appliquée. Si ce L'élément a un attribut méthode-signature, mais aucun attribut des citatives, La valeur de l'attribut de nom est utilisée comme entrée unique dans le liste. Si la valeur de l'attribut NAME n'est PAS l'une des personnes spéciales Valeurs énumérées dans la description de l'attribut Nom, cibles (ou sa valeur dérivée) n'a pas besoin de ne pas correspondre à l'ID d'un intérieur composant. xxx

@source: https://stackoverflow.com/a/19680483/ 1850844


0 commentaires

-1
votes

J'ai trouvé une solution de contournement pour ce problème xxx

à l'intérieur de votre mainpage définir avec

J'ai fait un appel GMAP avec ceci à partir d'un composant composé à mon empiègement


0 commentaires

0
votes

Vous avez probablement des éléments de votre page, com requis = "vrai" est conflictuel


0 commentaires