【发布时间】:2012-10-25 20:44:54
【问题描述】:
我遇到了一个奇怪的问题,我有一个带有 h:selectOneListbox 的表单:
<h:selectOneListbox value="#{webHostingServicesActions.customPackage.storage}" size="1">
<f:selectItem itemLabel="None" itemValue="#{null}" />
<f:selectItems value="#{webHostingServicesActions.storagesChoices}" var="item" itemLabel="#{item.name}" />
<f:converter converterId="productConverter" />
<a4j:ajax event="valueChange" render="lblTotal" />
</h:selectOneListbox>
当我从 f:selectItems 中选择一项时,设置器 webHostingServicesActions.customPackage.storage 不会被调用。但是当我从 f:selectItem 中选择项目时,setter 会被正确调用。
当然我使用的是自定义转换器,但它已经过测试并且响应正确。
Every other ajax actions in the form seems blocked when an item from f:selectItems is selected.服务器端没有错误,在调试中使用 a4j:log 也没有错误。
EDIT 1 :当我从 f:selectItems 中选择一个项目时,会执行应用请求值的服务器端代码,但它会在二传手。我无法追踪到足够远的地方来查看正在发生的事情。
EDIT 2:我添加了 BalusC LifeCycleListener...
当我从 f:selectItem
中选择项目时START PHASE RESTORE_VIEW 1
END PHASE RESTORE_VIEW 1
START PHASE APPLY_REQUEST_VALUES 2
END PHASE APPLY_REQUEST_VALUES 2
START PHASE PROCESS_VALIDATIONS 3
END PHASE PROCESS_VALIDATIONS 3
START PHASE UPDATE_MODEL_VALUES 4
END PHASE UPDATE_MODEL_VALUES 4
START PHASE INVOKE_APPLICATION 5
END PHASE INVOKE_APPLICATION 5
START PHASE RENDER_RESPONSE 6
END PHASE RENDER_RESPONSE 6
当我从 f:selectItems
中选择一个项目时START PHASE RESTORE_VIEW 1
END PHASE RESTORE_VIEW 1
START PHASE APPLY_REQUEST_VALUES 2
END PHASE APPLY_REQUEST_VALUES 2
START PHASE PROCESS_VALIDATIONS 3
END PHASE PROCESS_VALIDATIONS 3
START PHASE RENDER_RESPONSE 6
END PHASE RENDER_RESPONSE 6
我也测试了 change 而不是 valueChange 并没有什么不同。
感谢您的帮助!
亚历山大。
【问题讨论】:
-
您可以先将
event="valueChange"更改为event="change"。valueChange适用于EditableValueHolder组件(文本框等)。 -
您是否还检查过请求处理生命周期是否通过了验证阶段?在应用请求值之后
-
我添加了一个
是的,我收到了一个验证错误,现在我需要找到哪里,因为我没有使用任何验证器。 .. -
Value not valid?或者到底是什么错误? -
验证消息只告诉该值无效,因此它不是很有帮助...但现在已修复,谢谢!