h:commandbutton 与 ajax 调用错误的操作方法
Posted
技术标签:
【中文标题】h:commandbutton 与 ajax 调用错误的操作方法【英文标题】:h:commandbutton with ajax calls wrong action methods 【发布时间】:2013-07-18 09:51:25 【问题描述】:我对带有 <f:ajax>
标签的 jsf <h:commandButton>
有疑问。如果它有<f:ajax>
标签,它会调用支持bean 中的其他action
和actionListener
方法。如果它没有<f:ajax>
标签,它会调用它自己的权利action
方法。
这是我的sn-p:
<h:form>
<h:panelGroup id="loanContent" layout="block">
<ui:include src="#mainView.typePage.xhtml"/>
</h:panelGroup>
<h:commandButton id ="rLoanBtn" value="Create" action="#mainView.createNewType">
<f:ajax execute="loanContent" render="@form"/>
</h:commandButton>
</h:form>
如果我省略 <f:ajax execute="loanContent"/>
部分,它工作正常。如果我保持原样,它会调用其他方法,这些方法负责相同形式的其他按钮。顺便说一句,mainView
支持 bean 是一个 ViewScoped
托管 bean。
【问题讨论】:
您是否尝试将执行属性更改为包括相关命令按钮在内的内容?喜欢 execute="@this" 或 "@form" 开头吗? 动态包含导致了这种情况。哪个 JSF 实现/版本? @BalusC 经过几次实验。我知道它不是动态包含。但无论这些方法在其实际方法之前是什么,它都会调用其他方法。我使用的是 Mojarra 2.1.23 和 2.1.24 是一样的。 它在自己的操作方法之前通过其他方法,该方法与同一视图中的另一个 commandButton 组件相关联。 【参考方案1】:我已经找到原因了。如果我有其他按钮的<type = "button">
属性,它会在其实际方法之前通过绑定到其他按钮的方法。所以我省略了它然后它工作正常。
【讨论】:
以上是关于h:commandbutton 与 ajax 调用错误的操作方法的主要内容,如果未能解决你的问题,请参考以下文章
h:commandButton 在 h:dataTable 中不起作用
PrimeFaces commandButton 无法导航或更新
h:commandButton 不能与 JSF bean 一起工作,而页面正在加载
JSF - 我如何实现 JavaScript “你确定吗?”提示输入 <h:commandButton>