обработка мороженного - PullRequest
0 голосов
/ 02 мая 2011

Моя домашняя страница:

<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> 

Мой класс бобов

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 голос
/ 03 мая 2011

Прежде всего, похоже, вы не совсем понимаете разницу между использованием action() против actionListener().Вы хотите использовать action(), когда хотите вернуть что-то для правил навигации.Вы используете actionListener(), когда хотите ничего не возвращать, но хотите обновить определенные компоненты на своей странице.

Из вашего кода похоже, что вы не планируете переходить на любую другую страницу, поэтому уберите метод action() из вашего льда: компонент menuItem.

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

Я предполагаю, что выa определен в вашем faces-config.xml как управляемый компонент.

...