Jsf 当双击相同的菜单项时,richfaces面板菜单项会松开页面格式 我使用Ri饰相面板菜单有非常奇怪的行为,如果我选择两次相同的男人项,中间没有其他的动作,页面就会松开所有的格式。 我现在正在使用rf 4.3.2,我已经用firefox 23和ie 10进行了测试。 这是第一个被选中的男人

Jsf 当双击相同的菜单项时,richfaces面板菜单项会松开页面格式 我使用Ri饰相面板菜单有非常奇怪的行为,如果我选择两次相同的男人项,中间没有其他的动作,页面就会松开所有的格式。 我现在正在使用rf 4.3.2,我已经用firefox 23和ie 10进行了测试。 这是第一个被选中的男人 ,jsf,richfaces,Jsf,Richfaces,这是第二个 任何暗示都将不胜感激 menu.xhtml: <ui:composition xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core" xmlns:ui="http://java.sun.com/jsf/facelets"

这是第二个

任何暗示都将不胜感激

menu.xhtml:

<ui:composition xmlns="http://www.w3.org/1999/xhtml"
            xmlns:h="http://java.sun.com/jsf/html"
            xmlns:f="http://java.sun.com/jsf/core"
            xmlns:ui="http://java.sun.com/jsf/facelets"
            xmlns:rich="http://richfaces.org/rich">
<h:form id="menuForm">
  <rich:panelMenu style="width:200px; background: white"  itemMode="server" groupMode="ajax"
            groupExpandedLeftIcon="triangleUp" groupCollapsedLeftIcon="triangleDown"
                    topGroupExpandedRightIcon="chevronUp" itemLeftIcon="disc"
                    topGroupCollapsedRightIcon="chevronDown">
        <rich:panelMenuGroup label="#{menu.menuGroup1}" >
    <rich:panelMenuItem label="#{menu.menuItem11}" action="#{menuBean.getCurAction}" >
                <f:param name="curVal" value="11"/>
            </rich:panelMenuItem>
    <rich:panelMenuItem label="#{menu.menuItem12}" action="#{menuBean.getCurAction}" >
                <f:param name="curVal" value="12"/>
            </rich:panelMenuItem>
    <rich:panelMenuItem label="#{menu.menuItem13}" action="#{menuBean.getCurAction}" >
                <f:param name="curVal" value="13"/>
            </rich:panelMenuItem>
   <rich:panelMenuItem label="#{menu.menuItem14}" action="#{menuBean.getCurAction}" >
                <f:param name="curVal" value="14"/>
            </rich:panelMenuItem>
            <rich:panelMenuGroup label="#{menu.menuGroup15}" >
    <rich:panelMenuItem label="#{menu.menuItem151}" action="#{menuBean.getCurAction}" >
                    <f:param name="curVal" value="151"/>
                </rich:panelMenuItem>
   <rich:panelMenuItem label="#{menu.menuItem152}" action="#{menuBean.getCurAction}" >
                    <f:param name="curVal" value="152"/>
                </rich:panelMenuItem>
    <rich:panelMenuItem label="#{menu.menuItem153}" action="#{menuBean.getCurAction}" >
                    <f:param name="curVal" value="153"/>
                </rich:panelMenuItem>
            </rich:panelMenuGroup>
        </rich:panelMenuGroup>
        <rich:panelMenuGroup label="#{menu.menuGroup2}">
     <rich:panelMenuItem label="#{menu.menuItem21}" action="#{menuBean.getCurAction}" >
                <f:param name="curVal" value="21"/>
            </rich:panelMenuItem>
     <rich:panelMenuItem label="#{menu.menuItem22}" action="#{menuBean.getCurAction}" >
                <f:param name="curVal" value="22"/>
            </rich:panelMenuItem>
     <rich:panelMenuItem label="#{menu.menuItem23}" action="#{menuBean.getCurAction}" >
                <f:param name="curVal" value="23"/>
            </rich:panelMenuItem>
     <rich:panelMenuItem label="#{menu.menuItem24}" action="#{menuBean.getCurAction}" >
                <f:param name="curVal" value="24"/>
            </rich:panelMenuItem>
            <rich:panelMenuGroup label="#{menu.menuGroup25}" >
    <rich:panelMenuItem label="#{menu.menuItem251}" action="#{menuBean.getCurAction}" >
                    <f:param name="curVal" value="251"/>
                </rich:panelMenuItem>
    <rich:panelMenuItem label="#{menu.menuItem252}" action="#{menuBean.getCurAction}" >
                    <f:param name="curVal" value="252"/>
                </rich:panelMenuItem>
            </rich:panelMenuGroup>
        </rich:panelMenuGroup>
        <rich:panelMenuGroup  label="#{menu.menuGroup3}">
            <rich:panelMenuGroup label="#{menu.menuGroup31}" >
    <rich:panelMenuItem label="#{menu.menuItem311}" action="#{menuBean.getCurAction}" >
                    <f:param name="curVal" value="311"/>
                </rich:panelMenuItem>
    <rich:panelMenuItem label="#{menu.menuItem312}" action="#{menuBean.getCurAction}" >
                    <f:param name="curVal" value="312"/>
                </rich:panelMenuItem>
    <rich:panelMenuItem label="#{menu.menuItem313}" action="#{menuBean.getCurAction}" >
                    <f:param name="curVal" value="313"/>
                </rich:panelMenuItem>
            </rich:panelMenuGroup>
            <rich:panelMenuGroup label="#{menu.menuGroup32}" >
    <rich:panelMenuItem label="#{menu.menuItem321}" action="#{menuBean.getCurAction}" >
                    <f:param name="curVal" value="321"/>
                </rich:panelMenuItem>
    <rich:panelMenuItem label="#{menu.menuItem322}" action="#{menuBean.getCurAction}" >
                    <f:param name="curVal" value="322"/>
                </rich:panelMenuItem>
    <rich:panelMenuItem label="#{menu.menuItem323}" action="#{menuBean.getCurAction}" >
                    <f:param name="curVal" value="323"/>
                </rich:panelMenuItem>
    <rich:panelMenuItem label="#{menu.menuItem324}" action="#{menuBean.getCurAction}" >
                    <f:param name="curVal" value="324"/>
                </rich:panelMenuItem>
            </rich:panelMenuGroup>
            <rich:panelMenuGroup label="#{menu.menuGroup33}" >
    <rich:panelMenuItem label="#{menu.menuItem331}" action="#{menuBean.getCurAction}" >
                    <f:param name="curVal" value="331"/>
                </rich:panelMenuItem>
    <rich:panelMenuItem label="#{menu.menuItem332}" action="#{menuBean.getCurAction}" >
                    <f:param name="curVal" value="332"/>
                </rich:panelMenuItem>
    <rich:panelMenuItem label="#{menu.menuItem333}" action="#{menuBean.getCurAction}" >
                    <f:param name="curVal" value="333"/>
                </rich:panelMenuItem>
            </rich:panelMenuGroup>
        </rich:panelMenuGroup>
     <rich:panelMenuItem label="#{menu.menuItem98}" action="#{menuBean.getCurAction}" >
            <f:param name="curVal" value="98"/>
        </rich:panelMenuItem>
    <rich:panelMenuItem label="#{menu.menuItem99}" action="#{menuBean.optionLogout}" >
            <f:param name="curVal" value="99"/>
        </rich:panelMenuItem>
    </rich:panelMenu>
</h:form>
</ui:composition>

菜豆

package bean;

import bean.util.JsfUtil;
import entities.ESMenuAction;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Locale;
import java.util.ResourceBundle;
import java.util.TreeMap;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.event.ActionEvent;
import javax.faces.model.SelectItem;
import org.richfaces.component.UIPanelMenuGroup;
import uty.ESMessageManager;
import uty.ESUty;

@ManagedBean(name = "menuBean")
@SessionScoped
public class ESMenuBean implements Serializable {

final String sMenuConst4Action = "menuAction", sMenuConst4Item = "menuItem";
HashMap<String, String> hmKeys = null;
TreeMap<String, ESMenuAction> tm = null;
Locale curLoc;

public ESMenuBean() {
    ResourceBundle rb;
    try {
        rb = ResourceBundle.getBundle("properties.menu");
    } catch (Throwable t) {
        ESUty.getSystemLogger().setMsg4Error("ESMenuBean Error Accessing properties.menu Resource Bundle - " + t);
        return;
    }
    loadMenuItems(rb);
    curLoc = ESUty.getCurLocale();
    rb = null;
}

public String getCurAction() {
    String s = tm.get(getCurOption()).getMenuAction();
    if (s.equals("ESTipReco_list") && !ESUty.getESUserRights().isAdmin()) {
        JsfUtil.addMessage(ESMessageManager.getMessageNoLog("errMenuOptNotAllowed", FacesMessage.SEVERITY_ERROR, curLoc));
        ESUty.getSystemLogger().setMsg4Info("ESMenuBean.getCurAction Menu' Option " + s + " not Allowed for " + ESUty.getESUserCur().getU1usr());
        return null;
    }
    if (ESUty.getESUserRights().isAut4Menu(s)) {
        ESUty.getSystemLogger().setMsg4Info("ESMenuBean.getCurAction Menu' Option " + s + " Selected for " + ESUty.getESUserCur().getU1usr());
        return s;
    }
    JsfUtil.addMessage(ESMessageManager.getMessageNoLog("errMenuOptNotAllowed", FacesMessage.SEVERITY_ERROR, curLoc));
    ESUty.getSystemLogger().setMsg4Info("ESMenuBean.getCurAction Menu' Option " + s + " not Allowed for " + ESUty.getESUserCur().getU1usr());
    return null;
}

private String getCurOption() {
    return JsfUtil.getRequestParameter("curVal");
}

public ESMenuAction getMenuObject(String inMenuAction) {
    try {
        return tm.get(hmKeys.get(inMenuAction));
    } catch (Throwable t) {
        return null;
    }
}

public SelectItem[] getMenuItemsAvailableSelectOne() {
    return JsfUtil.getSelectItems(new ArrayList(tm.values()), true);
}

private void loadMenuItems(ResourceBundle inRb) {
    try {
        tm = new TreeMap();
        hmKeys = new HashMap();
        Enumeration<String> en = inRb.getKeys();
        while (en.hasMoreElements()) {
            String sKey = en.nextElement();
            if (!sKey.startsWith(sMenuConst4Item)) {
                continue;
            }
            String sMenuOption = sKey.substring(sMenuConst4Item.length());
            tm.put(sMenuOption,
                    new ESMenuAction(inRb.getString(sMenuConst4Action + sMenuOption),
                    inRb.getString(sKey),
                    sMenuOption));
            hmKeys.put(inRb.getString(sMenuConst4Action + sMenuOption), sMenuOption);
        }
    } catch (Throwable t) {
        ESUty.getSystemLogger().setMsg4Info("ESMenuBean.loadMenuItems Error Loading Menu' Items " + t);
    } finally {
    }
}

public String optionLogout() {
    ESUty.getSystemLogger().setMsg4Info("ESMenuBean.optionLogout Session Closed for " + ESUty.getESUserCur().getU1usr());
    uty.ESUtil.logout();
    return tm.get("99").getMenuAction();
}
}
packagebean;
导入bean.util.JsfUtil;
导入实体.esmenuation;
导入java.io.Serializable;
导入java.util.ArrayList;
导入java.util.Enumeration;
导入java.util.HashMap;
导入java.util.Locale;
导入java.util.ResourceBundle;
导入java.util.TreeMap;
导入javax.faces.application.FacesMessage;
导入javax.faces.bean.ManagedBean;
导入javax.faces.bean.SessionScoped;
导入javax.faces.event.ActionEvent;
导入javax.faces.model.SelectItem;
导入org.richfaces.component.UIPanelMenuGroup;
导入uty.ESMessageManager;
进口uty.ESUty;
@ManagedBean(name=“menuBean”)
@会议范围
公共类ESMenuBean实现了可序列化{
最后一个字符串sMenuConst4Action=“menuAction”,sMenuConst4Item=“menuItem”;
HashMap hmKeys=null;
TreeMap tm=null;
语言环境;
公共ESMenuBean(){
资源束rb;
试一试{
rb=ResourceBundle.getBundle(“properties.menu”);
}捕获(可丢弃的t){
ESUty.getSystemLogger().setMsg4Error(“ESMenuBean访问properties.menu资源包时出错-”+t);
返回;
}
负荷菜单项(rb);
curLoc=ESUty.getCurLocale();
rb=null;
}
公共字符串getCurAction(){
字符串s=tm.get(getCurOption()).getMenuAction();
if(s.equals(“ESTipReco_列表”)&&!ESUty.getESUserRights().isAdmin()){
JsfUtil.addMessage(ESMessageManager.getMessageNoLog(“errMenuOptNotAllowed”,FacesMessage.SEVERITY_ERROR,curLoc));
ESUty.getSystemLogger().setMsg4Info(“ESMenuBean.getCurAction菜单”选项“+s+”不允许用于“+ESUty.getESUserCur().getU1usr()”);
返回null;
}
if(ESUty.getESUserRights().isAut4Menu){
ESUty.getSystemLogger().setMsg4Info(“为“+ESUty.getESUserCur().getU1usr()”选择的ESMenuBean.getCurAction菜单”选项“+s+”);
返回s;
}
JsfUtil.addMessage(ESMessageManager.getMessageNoLog(“errMenuOptNotAllowed”,FacesMessage.SEVERITY_ERROR,curLoc));
ESUty.getSystemLogger().setMsg4Info(“ESMenuBean.getCurAction菜单”选项“+s+”不允许用于“+ESUty.getESUserCur().getU1usr()”);
返回null;
}
私有字符串getCurOption(){
返回JsfUtil.getRequestParameter(“curVal”);
}
公共ESMenuAction getMenuObject(MenuAction中的字符串){
试一试{
返回tm.get(hmKeys.get(inMenuAction));
}捕获(可丢弃的t){
返回null;
}
}
公共选择项[]getMenuItemsAvailableSelectOne(){
返回JsfUtil.getSelectItems(新的ArrayList(tm.values()),true);
}
私有void loadMenuItems(ResourceBundle inRb){
试一试{
tm=新树映射();
hmKeys=newhashmap();
枚举en=inRb.getKeys();
while(en.hasMoreElements()){
字符串sKey=en.nextElement();
如果(!sKey.startsWith(sMenuConst4Item)){
继续;
}
字符串sMenuOption=sKey.substring(sMenuConst4Item.length());
普通股认沽期权,
新的ESMenuAction(inRb.getString(sMenuConst4Action+sMenuOption),
inRb.getString(sKey),
(选择权);
hmKeys.put(inRb.getString(sMenuConst4Action+sMenuOption),sMenuOption);
}
}捕获(可丢弃的t){
ESUty.getSystemLogger().setMsg4Info(“ESMenuBean.loadMenuItems错误加载菜单项”+t);
}最后{
}
}
公共字符串optionLogout(){
ESUty.getSystemLogger().setMsg4Info(“ESMenuBean.optionLogout会话已关闭,用于“+ESUty.getESUserCur().getU1usr()”);
uty.ESUtil.logout();
return tm.get(“99”).getMenuAction();
}
}

你能分享代码吗?嗨,分享的代码够多了吗?