2009-02-17 7 views
0

Je ne sais pas ce que je fais mal. J'utilise Icefaces et j'ai simples managed bean:JSF IceFaces problème de base avec la valeur d'entrée de redisplaying

public class TestingController { 
    private String name; 

    public String submit() { 
     setName("newName"); 
     return null; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 

    public String getName() { 
     return name; 
    } 
} 

et vue:

<ice:inputText value="#{testController.name}" /> 
<ice:commandButton value="submit" action="#{testController.submit}" /> 

Quand je soumets la forme après la première affichage de la page, l'entrée est réaffichée avec « newName ». Lorsque j'efface le champ de saisie et que je soumets à nouveau le formulaire, le nom ne s'affiche plus avec "nouveauNom" comme je m'y attendais, mais il est toujours vide.

Comment cela est-il causé et comment puis-je résoudre ce problème?

Répondre

1

A travaillé pour moi. Après avoir cliqué sur Soumettre, la boîte de saisie est devenue "nouveauNom" sans tenir compte de ce qui était dans la boîte précédemment.

test.jspx

<?xml version="1.0" encoding="UTF-8"?> 
<!-- 
    Document : test 
    Created on : Feb 17, 2009, 2:35:12 PM 
    Author  : drew 
--> 
<jsp:root xmlns:h="http://java.sun.com/jsf/html" 
    xmlns:f="http://java.sun.com/jsf/core" 
    xmlns:jsp="http://java.sun.com/JSP/Page" 
    xmlns:ice="http://www.icesoft.com/icefaces/component" 
      version="2.0"> 
    <f:view> 
     <ice:form> 
     <ice:inputText id="inp" value="#{TestController.name}" /> <br/> 
     <ice:commandButton id="submit" value="SUBMIT" action="#{TestController.submit}" /> 
     </ice:form> 
    </f:view> 
</jsp:root> 

TestController.java

public class TestController { 

    /** Creates a new instance of TestController */ 
    public TestController() { 
    } 
    private String name; 

    public String submit() { 
     setName("newName"); 
     return null; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 

    public String getName() { 
     return name; 
    } 

} 

faces-config.xml

<managed-bean> 
    <managed-bean-name>TestController</managed-bean-name> 
    <managed-bean-class>com.evi.web.viewdata.TestController</managed-bean-class> 
    <managed-bean-scope>request</managed-bean-scope> 
</managed-bean> 

Pourriez-vous nous donner plus d'informations?

+0

Avez-vous essayé ce pour la deuxième fois? C'est le problème lorsque vous cliquez sur soumettre pour la deuxième fois, cela ne fonctionne pas. – michal

+0

Je ne suis pas sûr de ce que vous voulez dire. Lorsque vous le frappez la deuxième fois, la boîte de saisie dit à nouveau "newName". Peu importe ce qui était dans la boîte avant, il dit "newName" après soumettre. N'est-ce pas ce que vous attendez? – Drew

0

Essayez d'utiliser actionListener. parce que si vous utilisez une action, la page envoie l'information et recharge la page, mais si vous utilisez actionListener, seulement l'événement est déclenché.

<ice:commandButton id="submit" value="SUBMIT" actionListener="#{testController.submit}" /> 

Et dans le backing bean:

public class TestingController { 

private String name; 

public void submit(ActionEvent event) { 
setName("newName"); 

} 
Questions connexes