有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 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> 
    

    我假设afaces-config.xml中定义为托管bean