我面临一个奇怪的问题,我有一个带有 ah: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调试也没有错误。
编辑 1:当我从f:selectItems中选择一个项目时,会执行应用请求值的服务器端代码,但它会在 setter 之前的某处阻塞。我无法追踪到足够远的地方来查看正在发生的事情。
编辑 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
我还测试了更改而不是valueChange,没有什么不同。
任何帮助表示感谢!
亚历山大。