2009-02-17 1 views
0

Я не знаю, что я делаю неправильно. Я использую ICEfaces и я простой управляемый компонент:Основная проблема JSF IceFaces с перераспределением входного значения

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; 
    } 
} 

и вид:

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

Когда я отправить форму после первого отображения страницы, вход перерисован с «NEWNAME». Когда я очищу поле ввода и отправлю форму снова, имя не будет перерисовано с помощью «newName», как я ожидал бы, но он все еще пуст.

Как это вызвано и как я могу это решить?

ответ

1

Работал для меня. После нажатия кнопки «Отправить» поле ввода стало «newName» независимо от того, что было в поле ранее.

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; 
    } 

} 

лица-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> 

Не могли бы вы дать нам больше информации?

+0

вы пробовали это во второй раз? Это проблема, когда вы нажимаете кнопку submit во второй раз, когда она не работает. – michal

+0

Я не уверен, что вы имеете в виду. Когда вы ударяете его во второй раз, он снова вводит поле ввода «newName». Независимо от того, что было в коробке раньше, он сообщает «newName» после отправки. Разве это не то, что вы ожидаете? – Drew

0

Попробуйте использовать actionListener. потому что, если вы используете действие, страница отправляет информацию и перезагружает страницу, но если вы используете actionListener, то только событие было запущено.

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

И в бэк-боба:

public class TestingController { 

private String name; 

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

} 
Смежные вопросы