confirmDialog未获取selectOneMenu的新值

时间:2015-06-16 21:19:00

标签: primefaces selectonemenu

我需要更改数据库中的状态,但是当我更改状态时,confirmDialog没有采用新值,它会得到旧值

<p:selectOneMenu converter="omnifaces.SelectItemsConverter" disabled="#{myBB.currentStatus != StatusEnum.TEMP}"
    id="statusSOM" onchange="PF('confirm').show();" value="#{myBB.currentStatus}" widgetVar="statusWV">
    <f:selectItems itemDisabled="#{status == StatusEnum.ALL}" itemLabel="#{msgs[status.name]}"
        itemValue="#{status}" value="#{myBB.statusList}" var="status" />
</p:selectOneMenu>

<p:confirmDialog widgetVar="confirm" message="Save?" header="Confirm" severity="alert">
    <p:commandButton action="#{myBB.saveStatus}" oncomplete="PF('confirm').hide();"
        update="form1 form2" value="Yes" />
    <p:commandButton value="No" type="button"
        onclick="PF('statusWV').selectValue(PF('statusWV').preShowValue.val());PF('confirm').hide();" />
</p:confirmDialog>

我该怎么办?

2 个答案:

答案 0 :(得分:1)

更新值时,您需要更新p:confirmDialog组件。如果您在p:ajax上使用方便的p:selectOneMenu,这是直截了当的。

<p:selectOneMenu converter="omnifaces.SelectItemsConverter" disabled="#{myBB.currentStatus != StatusEnum.TEMP}" id="statusSOM" value="#{myBB.currentStatus}" widgetVar="statusWV">
     <f:selectItems itemDisabled="#{status == StatusEnum.ALL}" itemLabel="#{msgs[status.name]}" itemValue="#{status}" value="#{myBB.statusList}" var="status" />
     <p:ajax event="change" update="confirmdialog" oncomplete="PF('confirm').show()" />
</p:selectOneMenu>

<p:confirmDialog id="confirmdialog" widgetVar="confirm" message="Save?" header="Confirm" severity="alert">
    ...
</p:confirmDialog>

答案 1 :(得分:0)

我的声誉不足以发表评论,抱歉。 你是否用相同的<h:form>标签包围了你的JSF代码?

我记得你在方法saveStatus中必须从currentStatus获取价值。

请发布您的ManagedBean代码。