Основная проблема JSF IceFaces с повторным отображением входного значения - PullRequest
0 голосов
/ 17 февраля 2009

Я не знаю, что я делаю не так. Я использую 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», как я ожидал, но оно все еще пустое.

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

Ответы [ 2 ]

1 голос
/ 17 февраля 2009

работал для меня. После нажатия кнопки «Отправить» поле ввода стало «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 голосов
/ 06 марта 2009

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

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

И в бобе:

public class TestingController {

private String name;

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

}
...