hia*_*h17 1 jsf menuitem primefaces
我正在使用 JSF 2.2 和 Primefaces 4.0。我想在调用 menuItem“userSettingMenuItem”时触发 actionListener。问题是监听器方法永远不会被调用。
这是我的 MenuBar.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:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.org/ui">
<h:head>
</h:head>
<h:body>
<ui:composition>
<h:form>
<p:menubar styleClass="affaires"
style="position: absolute !important; bottom: 0px !important; vertical-align: bottom !important; list-style: none; width: 100%; text-align: center;">
<p:menuitem value="#{msg['navigation_home']}" url="home.xhtml" />
<p:menuitem value="Companies" url="companies.xhtml" />
<p:menuitem id="messageNumber"
value="#{taskboxMessageNumberBean.unSeenMessages} #{msg['navigation_taskbox']}"
url="taskbox.xhtml" />
<p:menuitem id="userSettingMenuItem"
value="#{loginBean.user.USER_NAME}"
url="user-settings.xhtml"
actionListener="#{userSettingBean.onClickSettingsMenuBar}"/>
<p:submenu label="#{msg['navigation_admin']}">
<p:menuitem value="Users" url="#" />
<p:menuitem value="Edit Help" url="#" />
<p:menuitem value="Edit GTC" url="#" />
</p:submenu>
<p:menuitem value="#{msg['navigation_help']}" url="#" />
</p:menubar>
</h:form>
</ui:composition>
</h:body>
</html>
Run Code Online (Sandbox Code Playgroud)
以及 UserSettingBean 中的 actionListener 方法:
public void onClickSettingsMenuBar(ActionEvent e){
log.info("onClickSettingsMenuBar");
}
Run Code Online (Sandbox Code Playgroud)
你不能同时拥有url和。actionListener使用actionListener并将用户重定向到user-settings.xhtml最后,使用以下内容:
FacesContext.getCurrentInstance().getExternalContext().redirect("user-settings.xhtml");
Run Code Online (Sandbox Code Playgroud)