binding attribute doesnt work with Seam?
mnrz Oct 7, 2007 1:48 AMHi everybody,
I have a SFSB in which I managed creating and editing user profile as follows:
@Stateful @Name("userRegister") @Scope(ScopeType.CONVERSATION) public class UserRegisterAction implements UserRegister { private Log logger = LogFactory.getLog(UserRegisterAction.class); private User tempUser; private HtmlSelectOneMenu selectOneUser; private SelectItem[] allUsers; private ArrayList<SelectItem> allRoles; private SelectItem[] allGroups; private boolean newUser; private Long selectedGroup = 0L; private String selectedUsername = "0"; private boolean reload = false; private UIInput username; private UIInput address; private UIInput contactNo; private UIInput mobilePhone; private String verifyPassword; private String password; @EJB private UserDao userDao; @EJB private GroupDao groupDao ; private List<String> selectedRoles; //rest of the codes... }
the problem is when I press the "Save" button to apply changes the new values never submit to the server and they will remain intact.
so I think the only way is to bind the items with its corresponding field at server-side but binding doesnt work!!
it throws exception which means this identifier can not resolve
javax.servlet.ServletException: /pages/main/userDifination.xhtml @57,77 binding="#{userRegister.username}": Target Unreachable, identifier 'userRegister' resolved to null javax.faces.webapp.FacesServlet.service(FacesServlet.java:154) org.ajax4jsf.framework.ajax.xmlfilter.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:96) org.ajax4jsf.framework.ajax.xmlfilter.BaseFilter.doFilter(BaseFilter.java:220) org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:100) org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:147) org.jboss.seam.servlet.SeamRedirectFilter.doFilter(SeamRedirectFilter.java:29) org.jboss.seam.servlet.SeamCharacterEncodingFilter.doFilter(SeamCharacterEncodingFilter.java:41) root cause javax.faces.el.PropertyNotFoundException: /pages/main/userDifination.xhtml @57,77 binding="#{userRegister.username}": Target Unreachable, identifier 'userRegister' resolved to null com.sun.facelets.el.LegacyValueBinding.isReadOnly(LegacyValueBinding.java:84) org.apache.myfaces.shared_impl.util.RestoreStateUtils.recursivelyHandleComponentReferencesAndSetValid(RestoreStateUtils.java:84) org.apache.myfaces.shared_impl.util.RestoreStateUtils.recursivelyHandleComponentReferencesAndSetValid(RestoreStateUtils.java:57) org.apache.myfaces.shared_impl.util.RestoreStateUtils.recursivelyHandleComponentReferencesAndSetValid(RestoreStateUtils.java:94) org.apache.myfaces.shared_impl.util.RestoreStateUtils.recursivelyHandleComponentReferencesAndSetValid(RestoreStateUtils.java:57) org.apache.myfaces.shared_impl.util.RestoreStateUtils.recursivelyHandleComponentReferencesAndSetValid(RestoreStateUtils.java:94) org.apache.myfaces.shared_impl.util.RestoreStateUtils.recursivelyHandleComponentReferencesAndSetValid(RestoreStateUtils.java:57) org.apache.myfaces.shared_impl.util.RestoreStateUtils.recursivelyHandleComponentReferencesAndSetValid(RestoreStateUtils.java:94) org.apache.myfaces.shared_impl.util.RestoreStateUtils.recursivelyHandleComponentReferencesAndSetValid(RestoreStateUtils.java:57) org.apache.myfaces.lifecycle.RestoreViewExecutor.execute(RestoreViewExecutor.java:96) org.apache.myfaces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:95) org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:70) javax.faces.webapp.FacesServlet.service(FacesServlet.java:139) org.ajax4jsf.framework.ajax.xmlfilter.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:96) org.ajax4jsf.framework.ajax.xmlfilter.BaseFilter.doFilter(BaseFilter.java:220) org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:100) org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:147) org.jboss.seam.servlet.SeamRedirectFilter.doFilter(SeamRedirectFilter.java:29) org.jboss.seam.servlet.SeamCharacterEncodingFilter.doFilter(SeamCharacterEncodingFilter.java:41)
here is a fragment of my xhtml file:
<h:form id="userDifination"> <br/> <h:panelGroup rendered="true" id="mainPanel"> <!-- validateAll --> <h:panelGrid rendered="true" align="center" id="mainPanel2" rowClasses="rowTable1, rowTable2" headerClass="titleTable" footerClass="footerTable" styleClass="borderTable" captionClass="titleTable" columns="6" border="0" width="70%"> <f:facet name="header"> <h:outputLabel id="label1" value="#{bundle['userDifination.header']}" /> </f:facet> <h:outputLabel id="userL" value="#{bundle['userDifination.selectUser']}" for="userMenu" /> <t:selectOneMenu id="userMenu" required="false" value="#{userRegister.selectedUsername}" valueChangeListener="#{userRegister.userListValueChanged}" onchange="submit(this)" > <f:selectItem itemLabel="New user..." itemValue="0" /> <f:selectItems id="userList" value="#{userRegister.allUsers}" /> </t:selectOneMenu> <h:panelGroup rendered="true" id="userPanel2"> </h:panelGroup> <h:panelGroup rendered="true" id="userPanel3"> </h:panelGroup> <h:panelGroup rendered="true" id="userPanel4"> </h:panelGroup> <h:panelGroup rendered="true" id="userPanel5"> </h:panelGroup> <h:outputLabel id="userUserNameL" value="#{bundle['userDifination.username']}" rendered="true" for="userUserNameT" /> <h:inputText id="userUserNameT" styleClass="textBox" binding="#{userRegister.username}" required="false" value="#{tempUser.username}" readonly="#{!userRegister.newUser}"/> <h:panelGroup rendered="true" id="userPanel"> <span class="errors"><h:message for="userUserNameT" /> </span> </h:panelGroup> <h:outputLabel id="userPasswordL" value="#{bundle['userDifination.password']}" for="userPasswordT" /> <h:inputSecret id="userPasswordT" styleClass="textBox" value="#{userRegister.password}" /> <h:panelGroup rendered="true" id="passPanel"> <span class="errors"><h:message for="userPasswordT" /> </span> </h:panelGroup> <h:outputLabel id="mobileL" value="#{bundle['userDifination.mobile']}" for="mobileT" /> <h:inputText id="mobileT" styleClass="textBox" value="#{tempUser.mobileContact}" /> <h:panelGroup rendered="true" id="mobilPanel"> <span class="errors"><h:message for="mobileT" /> </span> </h:panelGroup> <h:outputLabel id="userVerifyPasswordL" value="#{bundle['userDifination.verifyPassword']}" for="userVerifyPasswordT" /> <t:inputSecret id="userVerifyPasswordT" styleClass="textBox" value="#{userRegister.verifyPassword}" /> <h:panelGroup rendered="true" id="verifyPanel"> <span class="errors"><h:message for="userVerifyPasswordT" /> </span> </h:panelGroup> <h:outputLabel id="addressL" value="#{bundle['userDifination.address']}" for="addressT" /> <h:inputText id="addressT" styleClass="textBox" value="#{tempUser.address}" /> <h:panelGroup rendered="true" id="addressPanel"> <span class="errors"><h:message for="addressT" /> </span> </h:panelGroup> <h:outputLabel id="phoneL" value="#{bundle['userDifination.address']}" for="phoneT" /> <h:inputText id="phoneT" styleClass="textBox" value="#{tempUser.phoneNo1}" /> <h:panelGroup rendered="true" id="phonePanel"> <span class="errors"><h:message for="phoneT" /> </span> </h:panelGroup> <h:outputLabel id="roleL" value="#{bundle['userDifination.role']}" for="roleMenu" /> <h:selectManyMenu id="roleMenu" title="#{bundle['userDifination.role']}" value="#{userRegister.selectedRoles}" > <f:selectItems value="#{userRegister.allRoles}" /> </h:selectManyMenu> <h:panelGroup rendered="true" id="permissionPanel"> </h:panelGroup> <h:outputLabel id="groupL" value="#{bundle['userDifination.group']}" for="groupMenu" /> <h:selectOneMenu value="#{userRegister.selectedGroup}" id="groupMenu"> <f:selectItems value="#{userRegister.allGroups}" /> </h:selectOneMenu> <f:facet name="footer"> <h:panelGrid columns="1" styleClass="scrollerTable2" align="center" width="20%" columnClasses="standardTable_ColumnCentered"> <h:panelGroup rendered="true" id="buttonPanel"> <input type="reset" name="_id1:_id20:_id38" value="Reset" /> <h:commandButton type="submit" value="Back" action="#{userRegister.back}" /> <h:commandButton type="submit" value="Save" action="#{userRegister.save}" /> </h:panelGroup> </h:panelGrid> </f:facet> </h:panelGrid> <!-- validateAll --> <div align="center"> <h:messages warnClass="textWarn" infoClass="textInfo" fatalClass="textFatal" errorClass="textError" globalOnly="true" /> </div> </h:panelGroup> </h:form>
I am using JBoss Seam v1.1.6
is this a Seam issue or I've made a mistake somewhere ?
thank you so much