以下是我的主页:
<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;
}
}
有谁能告诉我如何处理菜单项的动作事件?
答案 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。