JSF2 commandButton; AJAX oder nicht AJAX, es aktualisiert die ganze Seite

dies ist ein einfaches Beispiel, das demonstriert der Fall.

haben Sie ein Formular mit einem Panel und zwei commandButton, einen AJAX der andere nicht. durch klicken auf einen von Ihnen, einen InputText erstellt, in der backing-bean und dem Fenster Hinzugefügt.

Mein managed bean:

@ManagedBean

public class DynamicPanel {

private Panel dynmaic;



public Panel getDynmaic() {
    return dynmaic;
}

public void setDynmaic(Panel dynmaic) {
    this.dynmaic = dynmaic;
}

public String adddynamic(){

    InputText text = new InputText();        
    dynmaic.getChildren().add(text);
    text.setValue(text.getId()+" Size= "+ dynmaic.getChildren().size());
    return null;
}

public String removeall(){
    this.dynmaic.getChildren().clear();
    return null;
}
}

Meine XHTML-Seite

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
  xmlns:h="http://java.sun.com/jsf/html" xmlns:ui="http://java.sun.com/jsf/facelets"
  xmlns:p="http://primefaces.org/ui" xmlns:f="http://java.sun.com/jsf/core">
<h:head>
    <title>Facelet Title</title>
</h:head>
<h:body>
    <h:form>
        <p:panel id="dynamic" binding="#{dynamicPanel.dynmaic}">

        </p:panel>

        <h:commandButton value="Add with AJAX" id="ajaxBtn" >
        <f:ajax onevent="onClick" execute="#{dynamicPanel.adddynamic()}" render="dynamic" />
         </h:commandButton>

        <h:commandButton value="Add" action="#{dynamicPanel.adddynamic}" />
        <h:commandButton value="remove all" action="#{dynamicPanel.removeall}" />   
    </h:form>


</h:body>
</html>

meine faces-config.xml ist leer.

Nun, ich habe drei Probleme mit dem code oben. Könnte jemand bitte klären Sie es zu mir, ich bin neu in JSF2.

die erste ist, warum die beiden command Tasten Verhalten sich genauso? Klick auf äther würde man aktualisieren die ganze Seite.

die zweite Frage ist, warum der Klick auf die nicht-AJAX-commandButton fügt zwei Inputfieds gleichzeitig?

die Dritte ist, warum ändern Sie den Umfang der managed bean zu @SessionScoped gibt einen Fehler aus, sobald man die Seite lädt? ( irgendwie nur beim laden der Seite, das Formular sendet eine ajax-Anfrage, ohne mir einem Klick auf die Befehlsschaltfläche. Warum ist das so?

  • Siehe den link unten. Ich bin nicht verstehen, warum die Angabe von execute="#{dynamicPanel.adddynamic()}" warum nicht "dynamisch" als Wert. mkblog.exadel.com/2010/04/...
  • kann nicht öffnen Sie den link
  • dont copy paste die url.. Klick drauf..
InformationsquelleAutor xedus | 2012-12-24
Schreibe einen Kommentar