我有<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>
调用它时,对话框将关闭。我想保持打开状态,只在取消按钮上关闭它。我怎样才能做到这一点?
答案 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
属性。