2014-05-21 3 views
0

JSF J'ai une page JSF avec deux formesformes multiples avec 2,2

J'utilise JSF 2.2 avec MyFaces mise en œuvre

Afficher les prochains exemples (xhtml et ManagedBean)

Lorsque je presse ajouter l'article (doNew), l'entrée affiche la valeur correcte; après avoir appuyé sur le bouton Retour (doCancel), et appuyez à nouveau sur Item (doNew).

La valeur de l'entrée exampleBean.newBean.descripcion affiche l'ancienne description lorsque j'ai appuyé sur la première. Mais la sortie # {exampleBean.newBean.descripcion} » indique toujours la valeur correcte. Si j'utilise une seule forme la question fonctionne bien acheter je dois comprendre pourquoi ne fonctionne pas avec deux formes?

Cordialement,

<?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:f="http://java.sun.com/jsf/core"> 

<h:body> 

<h:form styleClass="horizontal-form form-search" id="form1"> 
    <h:messages></h:messages> 

    <h:commandButton styleClass="btn btn-default btn-success" 
     value="Add Item" action="#{exampleBean.doNew}"> 

    </h:commandButton> 

</h:form> 


<h:form id="form2"> 
    <h:messages></h:messages> 

    <h:outputText value="#{exampleBean.newBean.descripcion}"></h:outputText> 
    <h:inputText value="#{exampleBean.newBean.descripcion}" id="input1234"></h:inputText> 

    <h:commandButton styleClass="btn btn-default btn-default" 
     value="Back" action="#{exampleBean.doCancel}" 
     immediate="true"> 
    </h:commandButton> 
</h:form> 

Et mon ManagedBean est

@ManagedBean(name = "exampleBean") 
@ViewScoped 
public class ExampleManagedBean { 
    private Object newBean; 
protected String panelMode = null; 

public ExampleManagedBean() { 
    // TODO Auto-generated constructor stub 
    panelMode = "default"; 

    newBean = new Concepto(); 
} 

public String doCancel() { 
    panelMode = "default"; 
    return null; 
} 

public String doNew() { 
    panelMode = "edit"; 
    Concepto c1 = new Concepto(); 
    c1.setDescripcion("descripcion " + System.currentTimeMillis()); 
    newBean = c1; 
    return null; 
} 

public Object getNewBean() { 
    return newBean; 
} 

public void setNewBean(Object newBean) { 
    this.newBean = newBean; 
} 

public String getPanelMode() { 
    return panelMode; 
} 

public void setPanelMode(String panelMode) { 
    this.panelMode = panelMode; 
} 

}

Répondre

0

Le commandButton soumet les valeurs de son formulaire. Et il ne voit pas les valeurs de l'autre forme. Donc, dans votre cas, vous devez mettre votre commandButton dans la même forme que la valeur à ajouter.


La balise de formulaire affiche un élément de formulaire HTML. Les formulaires JSF utilisent la technique "post-back" pour renvoyer les données de formulaire à la page qui contient le formulaire.

http://www.jsftoolbox.com/documentation/help/12-TagReference/html/h_form.html

+0

Oui, mais la valeur d'entrée est extraite de l'action. pourquoi travaille la première fois? et pourquoi le texte de sortie montre correctement? la sortie et l'entrée des rendus sont différentes pour le même objet. – jrey

+0

S'il vous plaît essayez de tester sans immédiat = "true" Et vérifiez si votre valeur correcte dans votre managedBean lorsque vous soumettez par Button Back – user3489875

Questions connexes