首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >IceFaces 1.8中的SelectInputText ValueChangeListener问题

IceFaces 1.8中的SelectInputText ValueChangeListener问题
EN

Stack Overflow用户
提问于 2013-04-23 19:32:56
回答 2查看 1.4K关注 0票数 1

我的应用程序使用的是ICEFaces 1.8。我在网格中有几个SelectInputText:

代码语言:javascript
运行
复制
<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有一些值变化的方法才会被执行吗?

请让我知道这件事。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-04-23 20:19:27

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

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

基本上,此方法是单击的,而不是像或Change事件那样被视为事件的应用程序事件。

但是,使用Ajax提交,我们可以控制JSF表单中的哪些组件将被提交,以及在客户端收到响应后将重新呈现哪些控件以显示它们的新值。但是,出于性能原因,属性partialSubmit只是与Ajax请求结合使用,以最小化ViewState和请求的大小。从功能上讲,此partialSubmit属性本身并不具有任何实际效果。

票数 1
EN

Stack Overflow用户

发布于 2013-04-24 10:10:31

这可能是因为<ice:selectInputText>初始值为、NULL、,第一次部分或全部提交将导致从页面提交空字符串

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

代码语言:javascript
运行
复制
<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将在页面上执行多个组件,但是它会在datatable列、panelSeries等中避免它。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16168294

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档