【问题标题】:JSF IceFaces basic problem with redisplaying input valueJSF IceFaces 重新显示输入值的基本问题
【发布时间】:2009-02-17 14:15:11
【问题描述】:

我不知道我做错了什么。我正在使用 IceFaces,并且我有简单的托管 bean:

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”,但它仍然是空的。

这是如何引起的,我该如何解决?

【问题讨论】:

    标签: jsf icefaces


    【解决方案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;
       }
    
    }
    

    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>
    

    您能告诉我们更多信息吗?

    【讨论】:

    • 您第二次尝试了吗?这是第二次点击提交时的问题,它不起作用。
    • 我不确定你的意思。当您第二次点击它时,它会使输入框再次显示“newName”。无论之前的框中是什么,提交后都会显示“newName”。这不是您所期望的吗?
    【解决方案2】:

    尝试使用 actionListener。因为如果你使用 action 页面发送信息并重新加载页面,但如果你使用 actionListener 只会触发事件。

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

    在后台bean中:

    public class TestingController {
    
    private String name;
    
    public void submit(ActionEvent event) {
    setName("newName");
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-02
      相关资源
      最近更新 更多