Jsf 为什么p:dialog中的p:commandButton不启动actionListener?
表单中还有一些其他控件。单击链接时,侦听器未被激发。有什么问题吗?请帮忙 您需要将其声明为EL方法表达式,而不是普通字符串Jsf 为什么p:dialog中的p:commandButton不启动actionListener?,jsf,jsf-2,primefaces,Jsf,Jsf 2,Primefaces,表单中还有一些其他控件。单击链接时,侦听器未被激发。有什么问题吗?请帮忙 您需要将其声明为EL方法表达式,而不是普通字符串 <h:form prependId="false"> <p:dialog modal="true"> <p:commandLink ajax="true" value="ok" actionListener="Bean.listenerMethod"/> </p:dialog> </h:form> 可以肯
<h:form prependId="false">
<p:dialog modal="true">
<p:commandLink ajax="true" value="ok" actionListener="Bean.listenerMethod"/>
</p:dialog>
</h:form>
可以肯定的是,{Bean}
必须是一个有效的托管Bean,托管Bean名称为“Bean”
,该名称又包含以下方法
actionListener="#{Bean.listenerMethod}"
其中来自javax.faces
包,而不是java.awt
包
如果这仍然不起作用,那么它是由其他原因引起的。例如,表单是嵌套的,呈现的
属性被评估为false
,等等。有关概述,请参阅。尝试
public void listenerMethod(ActionEvent event) {
// ...
}
__________
__________
_________
_________
谢谢您应该使用
例如:
<h:form id="mainform">
__________
__________
<p:dialog id="test" widgetVar="Testing">
<h:form>
<h:panelGrid columns="1">
_________
_________
</h:panelGrid>
<p:commandLink ajax="true" update="mainform" process="@all" value="ok" actionListener="#{Bean.listenerMethod}" oncomplete="Testing.hide()"/>
</h:form>
</p:dialog>
</h:form>
这是准确的代码吗?有一个非常明显的错误,但我不想为“明显队长”踢球。对不起,我用commandLink代替commandButton。这是错误BalusC吗?不,您的actionListener
不是方法表达式。这是一个简单的字符串。我以前用过这个符号(Bean.listenerMethod)来调用侦听器。它很有效。你的意思是正确的符号是“Bean.listenerMethod()”?谢谢你,斯科尔茨先生>我的大脑脱水了:)我试过所有其他的东西。我试过了,就像你说的那样,把{Bean.listenerMethod}
但现在它也不会触发侦听器:(BalusC关于这个问题,我可以再问一个更详细的问题吗?你能帮忙吗?PrimeFaces已经有一段时间了,他们的文档不再免费了,但是表单不应该出现在对话框中吗?还要确保你没有相互嵌套表单。我已经检查了PrimeFaces 2.1文档及其showcase。在p:dialog或p:confirmDialog中没有提到不使用表单。无论如何,感谢您的提示:)
<h:commandLink id="elimina"
action="#{listaBonificiModel.eliminaSelezionato()}"
update="@(form)" oncomplete="PF('bonificoDialog').hide()"
value ="Elimina" />