【发布时间】:2012-06-05 10:58:19
【问题描述】:
在 ajax 调用期间 h:selectOneMenu 的空/空值未设置为支持 bean 中的属性,而如果我选择任何具有非空/非空值的下拉项,则将其设置为属性在 ajax 调用期间在 backing bean 中。 仅当我在 ui:repeat 标记中使用 h:selectOneMenu 和 f:ajax 时,我才会注意到这种行为。而且,没有 ui:repeat 标记,值(空和非空)在 ajax 调用期间被正确设置为支持 bean 中的属性。
以下是上述场景的代码片段:
<h:panelGrid id="details">
<ui:repeat id="listId" value="#{new.List}" var="item" varStatus="itemStatus">
<h:panelGrid id="idDoc">
<ui:repeat id="docListId" value="#{item.docs}" var="docItem" varStatus="docStatus">
<h:selectOneMenu id="type" value="#{docItem.docType}" label="Type" style="" styleClass='' >
<f:selectItems value="#{new.docSelections}"/>
<f:ajax onevent="refreshDoc" event="valueChange" render="@this :form:listId:docListId:idDoc" execute=":form:listId:details" listener="#{new.save}"/>
</h:selectOneMenu>
</ui:repeat>
</h:panelGrid>
</ui:repeat>
</h:panelGrid>
我使用 ui:repeat,h:selectoneMenu 和 f:ajax 的方式有什么问题吗?
【问题讨论】:
-
它是否与 render="@form" execute="@form" 一起使用?
-
Tx 回复。不,我已经尝试过了,但仍然没有将空值设置为支持 bean。
-
b.t.w 删除
event="valueChange"(并再次检查...) -
嵌套的 ui:repeat 有几个问题,这可能就是原因。尝试删除其中一个(用于测试),看看它是否有效。
标签: ajax jsf-2 selectonemenu uirepeat