繁体   English   中英

IceFaces 1.8中的SelectInputText ValueChangeListener问题

[英]SelectInputText ValueChangeListener Issues in IceFaces 1.8

我正在使用ICEFaces 1.8作为我的应用程序。 我在网格中有一些SelectInputText,如下所示:

<ice:panelGrid columns="4">             
            <ice:selectInputText id="txtId"                             
                         valueChangeListener="#{employeeBean.searchIdListener}" partialSubmit="true"></ice:selectInputText>
            <ice:selectInputText id="txtFirstName"
                         valueChangeListener="#{employeeBean.searchFirstNameListener}" partialSubmit="true"></ice:selectInputText>
            <ice:selectInputText id="txtLastName"
                         valueChangeListener="#{employeeBean.searchLastNameListener}" partialSubmit="true"></ice:selectInputText>
            <ice:selectInputText id="txtPhoneNumber"
                         valueChangeListener="#{employeeBean.searchPhnNbrListener}" partialSubmit="true"></ice:selectInputText>
        </ice:panelGrid>

当我更改上述任何一个SelectInputText的值时,我可以看到所有上述四个ValueChangeListener方法都被执行 - 为什么?

是不是只有执行的方法,其SelectInputText有一些值的变化?

请让我知道这件事。

它可能正在发生,因为<ice:selectInputText>初始值为NULL,并且第一次部分或完全提交将导致从页面提交EMPTY字符串

使用空字符串初始化您的selectInputText以避免这种情况,或者您可以在JSF 2.x中添加以下内容,

<context-param>
    <param-name>
         javax.faces.INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL
    </param-name>
    <param-value>true</param-value>
</context-param>

另外要添加到Icefaces,它的部分提交有点令人困惑。 它更像是使用部分Ajax / DOM呈现的完整Ajax提交。 在某些情况下,icefaces 1.8将在页面上执行多个组件,但是它在数据表列,panelSeries等中避免使用它。

我认为这源于对partialSubmit属性的意图的误解以及对valueChangeListener的误解。

通过单击提交按钮提交表单时,可以说,表单中绑定到托管属性值或在valueChangeListener分配了托管bean方法的所有组件都要求服务器提交,处理和验证其请求值。 假设验证阶段成功,那些提交的值将传递到UPDATE_MODEL阶段,其中将调用每个valueChangeListener方法。

基本上,此方法不会像Click或Change事件一样被视为应用程序事件。

但是,使用Ajax提交,我们可以控制将提交JSF表单中的哪些组件,以及在客户端收到响应后将重新呈现哪些控件以显示其新值。 但是, partialSubmit属性只是与Ajax请求一起使用,以最小化ViewState的大小和性能请求。 从功能partialSubmit这个partialSubmit属性本身没有任何实际效果。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM