[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