In my .xhtml file, I have the following SelectOneMenu component:
<ui:define name="formContent"> <h:selectOneMenu value="#{mrBean.itemCategoryID}"> <f:ajax render="abc def" execute="@this" listener="#{mrBean.getListOfItems}"></f:ajax> <f:selectItem itemLabel="Choose one .." itemValue="0" noSelectionOption="true" /> <f:selectItems value="#{mrBean.itemCategories}" var="ic" itemLabel="#{ic.name}" itemValue="#{ic.id}" /> </h:selectOneMenu> <h:panelGrid id="abc" columns="3" border="1"> <h:outputText style="font-weight: bold" value="Name"/> <h:outputText style="font-weight: bold" value="Producer" /> <h:outputText /> </h:panelGrid> <h:panelGroup id="def" > <ui:repeat value="#{mrBean.items}" var="i"> <h:form id="BuyItemForm"> <h:panelGrid columns="3" border="1"> <h:outputText style="font-weight: normal" value="#{i.name}" /> <h:outputText style="font-weight: normal" value="#{i.producer.name}" /> <h:commandButton value="Buy" actionListener="#{mrBean.buyItem}" > <f:param name="itemID" value="#{i.id}" /> </h:commandButton> </h:panelGrid> </h:form> </ui:repeat> </h:panelGroup> </ui:define> When I open the page, it can load normally with the menu populated properly. However, when I choose 1 of the option, I ran into the following error:
SEVERE: javax.faces.component.UpdateModelException: javax.el.ELException: /partner/BuyItem.xhtml @53,81 value="#{mrBean.itemCategoryID}": Can't set property 'itemCategoryID' on class 'managedBean.MrBean' to value 'null'. ... Caused by: javax.el.ELException: /partner/BuyItem.xhtml @53,81 value="#{mrBean.itemCategoryID}": Can't set property 'itemCategoryID' on class 'managedBean.MrBean' to value 'null'. at com.sun.faces.facelets.el.TagValueExpression.setValue(TagValueExpression.java:139) at javax.faces.component.UIInput.updateModel(UIInput.java:818) ... 47 more Caused by: java.lang.IllegalArgumentException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at javax.el.BeanELResolver.setValue(BeanELResolver.java:381) at com.sun.faces.el.DemuxCompositeELResolver._setValue(DemuxCompositeELResolver.java:255) at com.sun.faces.el.DemuxCompositeELResolver.setValue(DemuxCompositeELResolver.java:281) at com.sun.el.parser.AstValue.setValue(AstValue.java:197) at com.sun.el.ValueExpressionImpl.setValue(ValueExpressionImpl.java:286) at com.sun.faces.facelets.el.TagValueExpression.setValue(TagValueExpression.java:131) ... 48 more EDIT: this is my bean with getListOfItems function:
@ManagedBean @ViewScoped public class MrBean { @EJB private PartnerBeanLocal partnerBean; @ManagedProperty(value="0") private long itemCategoryID; private List<ItemState> items; ... public void getListOfItems() { try { System.out.println(itemCategoryID); // I never saw this line printed out ArrayList data = partnerBean.getInfo(Constants.GET_LIST_OF_ITEMS, itemCategoryID); int result = ((Integer) data.get(0)).intValue(); if (result == Constants.STATUS_SUCCESSFUL) items = (List<ItemState>) data.get(1); else if (result == Constants.STATUS_NOT_FOUND) FacesContext.getCurrentInstance().getExternalContext().redirect("HomePage.xhtml"); } catch (IOException ex) { Logger.getLogger(MrBean.class.getName()).log(Level.SEVERE, null, ex); } } ... // Getters and Setters ... public long getItemCategoryID() { return itemCategoryID; } public void setItemCategoryID(long itemCategoryID) { this.itemCategoryID = itemCategoryID; } public List<ItemState> getItems() { return items; } public List<ItemState> setItems(List<ItemState> items) { this.items = items; } ... } I'd be very grateful if someone could give me an advice on how to tackle this problem.
EDIT 2: Thanks everyone for helping me! The problem was that I stupidly forgot to put the <f:ajax> tag inside a <h:form> tag.
nullis being passed andjava.lang.IllegalArgumentExceptionis thrown while trying to update model value. Can you post your managed-bean code?itemCategoryIDof typeintorInteger?