Jsf primefaces p:menuitem actionlistener未调用
我使用Mojarra 2.1.23和Primefaces 3.5。我试图让这段代码正常工作,但由于某些原因,我无法调用侦听器Jsf primefaces p:menuitem actionlistener未调用,jsf,primefaces,menuitem,Jsf,Primefaces,Menuitem,我使用Mojarra 2.1.23和Primefaces 3.5。我试图让这段代码正常工作,但由于某些原因,我无法调用侦听器 <h:form id="menu" > <p:growl id="messages" autoUpdate="true" showDetail="true" /> <p:panelMenu> <p:submenu label="Ajax Menuitems"> <
<h:form id="menu" >
<p:growl id="messages" autoUpdate="true" showDetail="true" />
<p:panelMenu>
<p:submenu label="Ajax Menuitems">
<p:menuitem value="#{MenuController.test}"
actionListener="#{MenuController.save}" ajax="true"
update="messages" />
<p:menuitem value="Update" actionListener="#{MenuController.save}"
update="messages" />
</p:submenu>
</p:panelMenu>
</h:form>
我也在使用facelets,下面是Layout.xhtml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.org/ui">
<h:head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title><ui:insert name="title" /></title>
</h:head>
<h:body>
<div id="layout">
<table>
<tr>
<td>
<div id="menu">
<ui:include src="menu.xhtml"/>
</div>
</td>
<td>
<div id="content">
<ui:insert name="content">
</ui:insert>
</div>
</td>
</tr>
<tr>
<td>
<div id="footer">
<p><a href="#">© Footer</a></p>
</div>
</td>
</tr>
</table>
</div>
当我单击菜单项时,该方法没有被调用。通过将表单上的id从“menu”更改为“menuForm”来解决问题,以避免与布局上id为“menu”的id混淆
未关闭。这是错别字吗?对不起,这是错别字,它在原始文件中已关闭。我刚刚在这里更正了它,您没有收到任何错误消息?我不确定您做错了什么。我测试了你的代码,它在我这边运行。我在想,也许你的id在
的更新中出错了。它应该是update=:menu:messages
,但我预期会出现错误。奇怪的是,它仍然只对值messages
起作用。我承认,虽然我对素数面不是很精通。另一件事是在你的代码中,你在构造函数中定义了方法和属性。我想那是个打字错误。属性test
没有getter和setter。再说一遍,假设是打字错误。我会给你一个答案。浏览列表,看看你是否做了作者描述的事情。等一下,找它。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.org/ui">
<h:head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title><ui:insert name="title" /></title>
</h:head>
<h:body>
<div id="layout">
<table>
<tr>
<td>
<div id="menu">
<ui:include src="menu.xhtml"/>
</div>
</td>
<td>
<div id="content">
<ui:insert name="content">
</ui:insert>
</div>
</td>
</tr>
<tr>
<td>
<div id="footer">
<p><a href="#">© Footer</a></p>
</div>
</td>
</tr>
</table>
</div>
<h:form id="menuForm" >
<p:growl id="messages" autoUpdate="true" showDetail="true" />
<p:panelMenu>
<p:submenu label="Ajax Menuitems">
<p:menuitem value="#{MenuController.test}"
actionListener="#{MenuController.save}" ajax="true"
update="messages" />
<p:menuitem value="Update" actionListener="#{MenuController.save}"
update="messages" />
</p:submenu>
</p:panelMenu>
</h:form>