p:调用valueChangeListener时对话框关闭

时间:2012-12-28 06:36:41

标签: jsf dialog primefaces selectonemenu

我有<p:dialog>,其中包含<h:selectOneMenu> valueChangeListener。这是相关代码:

<p:dialog> 
    <h:form>
        <div>
            <h:selectOneMenu value="#{itemController.itemId}" valueChangeListener="#{itemController.chkItemType}" onchange="submit()">
                <f:selectItems value="#{itemController.itemsList}" />
            </h:selectOneMenu> 
        </div>
    </h:form>
</p:dialog>

调用它时,对话框将关闭。我想保持打开状态,只在取消按钮上关闭它。我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:1)

这是预期的行为。您所在的onchange="submit()"会同步提交整个表单,从而导致完整的页面重新加载。

您应该使用ajax来执行提交。仅使用此标记替换onchange属性

<f:ajax />

<h:selectOneMenu>内。这样,表单将以异步方式提交,默认情况下根本不会重新加载页面。

根据具体的功能要求which you didn't tell anything about,您可能根本不需要valueChangeListener,而是<f:ajax listener>

<f:ajax listener="#{itemController.chkItemType}" />

如果您想在成功执行ajax请求时更新页面的某些部分,请使用其render属性。

另见: