【发布时间】:2018-03-22 19:46:22
【问题描述】:
我正在尝试模仿PrimeFaces Dialog example。由于某种我无法找到的原因,我的 PrimeFaces 按钮似乎没有调用所需的托管 bean 方法:
<h:form>
<p:commandButton value="Open" icon="ui-icon-extlink" actionListener="#{myController.createDialog()}" />
</h:form>
托管 bean:
@Named(value = "myController")
@ViewScoped
public class MyController implements Serializable {
public void createDialog() {
System.out.println("%%%%%%%%%%%%%%%%%%%%%%%%%");
...
打印语句永远不会执行,就像监听器不工作一样。当我单击按钮时,没有响应。没有后端错误,没有 JS 错误,什么都没有。我只看到 some 请求已完成,因为我在用户通过授权层时登录。所以发生了一些事情,但似乎默默地失败了。
我尝试过的:
- 将按钮移动到页面中的其他位置
-
使用 id:
<p:commandButton id="ex" value="Open" icon="ui-icon-extlink" actionListener="#{myController.createDialog()}" /> <h:message for="ex" /> 删除
ViewScoped-
在方法中需要
javax.faces.event.ActionEventpublic void createDialog(ActionEvent event) { System.out.println("%%%%%%%%%%%%%%%%%%%%%%%%%"); -
更改方法签名
action="#{myController.createDialog(5)}"和
public void createDialog(int s) { System.out.println("%%%%%%%%%%%%%%%%%%%%%%%%%"); -
我什至尝试创建一个
WEB-INF/faces-config.xml(我不希望这样做,并且根据PrimeFaces documentation 我不需要它):<?xml version='1.0' encoding='UTF-8'?> <faces-config version="2.2" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_2.xsd"> <application> <action-listener>org.primefaces.application.DialogActionListener</action-listener> <navigation-handler>org.primefaces.application.DialogNavigationHandler</navigation-handler> <view-handler>org.primefaces.application.DialogViewHandler</view-handler> </application> <lifecycle> <phase-listener>org.primefaces.component.lifecycle.LifecyclePhaseListener</phase-listener> </lifecycle>
显然在PrimeFaces中使用actionListeners is not as correct as it should be... 有没有其他方法可以使用PrimeFaces组件?
【问题讨论】:
-
我不确定,但我总是在我的 ActionListeners 中添加一个 ActionEvent 参数...会不会是问题所在?
-
我认为这在 PrimeFaces 中没有必要......无论如何,我尝试添加 javax.faces.event.ActionEvent 并且它也不起作用
标签: jsf primefaces