[jboss-user] [JBoss Seam] - binding attribute doesnt work with Seam?
mnrz
do-not-reply at jboss.com
Sun Oct 7 01:48:44 EDT 2007
Hi 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
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4092315#4092315
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4092315
More information about the jboss-user
mailing list