icefaces菜单栏处理

时间:2011-05-02 02:58:18

标签: java icefaces

以下是我的主页:

<h:body styleClass="ice-skin-rime"> 
   <h:form id="form"> 
      <ice:menuBar orientation="#{menuBar.orientation}"> 
         <ice:menuItem value="HRM" id="hrm"> 
            <ice:menuItem id="myPage" value="MyPage" 
               actionListener="#{a.listener}" 
               action="#{a.param}"> 
               <f:param name="myParam" value="myPage"/> 
            </ice:menuItem> 
         </ice:menuItem> 
      </ice:menuBar> 
   </h:form> 
</h:body> 

以下是我的bean类

import javax.faces.component.UIComponent; 
import javax.faces.context.FacesContext; 
import javax.faces.event.ActionEvent; 
import java.util.Map; 

public class a
{ 
   private String param; 
   private String orientation = "horizontal"; 

   public String getParam() 
   { 
      return param; 
   } 

   public void setParam(String param)
   { 
      this.param = param; 
   } 

   public void listener(ActionEvent e) 
   { 
      FacesContext facesContext = FacesContext.getCurrentInstance(); 
      Map params = facesContext.getExternalContext().getRequestParameterMap(); 

      String myParam = (String) params.get("myParam"); 
      if (myParam != null && myParam.length() > 0) 
      { 
         setParam(myParam); 
      } 
      else 
      { 
         setParam("not defined"); 
      } 
   } 

   public String getOrientation() 
   { 
      return orientation; 
   }

   public void setOrientation(String orientation) 
   { 
         this.orientation = orientation; 
   } 
} 

有谁能告诉我如何处理菜单项的动作事件?

1 个答案:

答案 0 :(得分:1)

首先,您似乎不清楚使用action()actionListener()之间的区别。如果要返回导航规则,可以使用action()。当您想要返回任何内容但希望更新页面上的某些组件时,可以使用actionListener()

从您的代码中看起来您似乎没有计划导航到任何其他页面,因此请从ice:menuItem组件中取出action()方法。

<ice:menuItem id="myPage" value="MyPage" 
               actionListener="#{a.listener}" > 
               <f:param name="myParam" value="myPage"/> 
            </ice:menuItem> 

我假设您在a中将faces-config.xml定义为托管bean。