【问题标题】:jsf inputText not refreshing when i reset the bean's property当我重置bean的属性时,jsf inputText不刷新
【发布时间】:2017-05-18 10:24:23
【问题描述】:

我的屏幕是这样的

问题是,当我按下重置按钮时,代码输入字段没有按预期清除。

jsf如下:

<h:form id="form1">
    <h:inputText id="code" value="#{MyBean.data.code}" />

    <a4j:commandButton  immediate="true"
        action="#{MyBean.clear}" render="form1" update="@form">
    </a4j:commandButton>

    <h:outputText value="#{session.lastAccessedTime}">
          <f:convertDateTime pattern="HH:mm:ss.SSS" type="date" />
    </h:outputText>
</h:form>

bean代码如下:

public class MyBean {

    DataInnerClass data = new DataInnerClass(); 
    //getter and setter for data

    public class DataInnerClass {

        private String code;
        //getter and setter for code

        public DataInnerClass() {
            super();
        }
    }

    public void clear() {        
        data = new DataInnerClass();
        Logger.getLogger( MyBean.class.getName() ).log(Level.SEVERE, "data.code="+data.code);
        //logs data.code=null
    }
}

当我按下重置按钮时,日志显示字段code 的值已变为空(不再是“ZZ”);我也知道屏幕刷新成功,因为我已经显示了当前时间,每次点击后都会更新。因此,支持 bean 属性发生变化,屏幕刷新,输入字段仍然保持相同的值。你知道为什么会这样吗?

【问题讨论】:

    标签: jsf partial-page-refresh


    【解决方案1】:

    我在以下位置找到了有用的 BalusC 答案:How can I populate a text field using PrimeFaces AJAX after validation errors occur?

    我从那里了解到,在某些验证错误的情况下,输入字段将保留用户输入的值,并且将与支持 bean 不同步。我必须强调,就我而言,没有验证错误,但在commandButton 中添加&lt;f:ajax resetValues&gt; 仍然对我有用。

    resetValues 属性的具体示例位于 https://jsflive.wordpress.com/2013/06/20/jsf-22-reset-values/

    最后,我的按钮标签是这样的:

    <a4j:commandButton  immediate="true"
        action="#{MyBean.clear}" render="form1" update="@form">
        <f:ajax render="code" resetValues="true" />
    </a4j:commandButton>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-12-25
      • 1970-01-01
      • 1970-01-01
      • 2012-06-25
      • 2016-05-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多