我正在尝试创建一个动态菜单,以便在第一个选择器中选择某些内容时,根据第一个选择器中的选择从数据库中填充第二个选项卡。这是.xhtml:
<f:view>
<h:form>
<h:selectOneMenu id="seasonSelector" value ="#{selector_bean.season}">
<f:ajax event="valueChange" listener="#{selector_bean.genEvents}"
execute="seasonSelector" render="eventSelector" />
<f:selectItems value ="#{selector_bean.seasons}" var ="s"
itemLabel="#{s.getRange()}"
itemValue="#{s}"></f:selectItems>
</h:selectOneMenu>
<h:selectOneMenu id="eventSelector">
<f:selectItems value ="#{selector_bean.events}" var ="e"
itemLabel="#{e.event_Name}"
itemValue="#{e}"></f:selectItems>
</h:selectOneMenu>
</h:form>
</f:view>
这是豆子:
@ManagedBean(name = "selector_bean")
@Stateless
public class selector_bean implements Serializable{
@EJB
SeasonFacade sf;
@EJB
EventFacade ef;
@EJB
WrestlerFacade wf;
private Season season;
private Event event;
private List<Event> events;
private Match match;
private Wrestler wrestler;
public List<Season> getSeasons(){
return sf.findAll();
}
public void genEvents(AjaxBehaviorEvent event){
events = (ef.findBySeason(season));
}
// setters and getters after this
当我更改第一个selectOneMenu的值时,会出现一个弹出框,显示以下消息:
httpError: There was an error communicating with the server, status: 404
我是JSF和AJAX的新手,所以如果我做错了,请随意撕开我。谢谢你的帮助!
答案 0 :(得分:1)
您的@ManagedBean
表现为具有@Stateless
注释的EJB。删除它,而是将bean的范围设置为@ViewScoped
:
@ManagedBean(name = "selectorBean")
@ViewScoped
public class SelectorBean implements Serializable{
//your implementation...
}
另外,请务必遵循JavaBean naming conventions。我已经将你的班级名称改为以大写字母开头。