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
_______________________________________________
jboss-user mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/jboss-user