I sort of think it is the way I did my SelectUsersForm because the boolean selected is defined in another Java class. Please see the attachments. But, the checkbox worked without any problem if it is not preceded by a form.
My struts-config.xml looks like: <struts-config> <form-beans> .... <form-bean name="SelectUsersForm" type="gov.cbp.ace.st.tf.web.admin.form.SelectUsersForm"> </form-bean> <form-bean name="FindUsersForm" type="gov.cbp.ace.st.tf.web.admin.form.FindUsersForm"> </form-bean> .... </form-beans> <action-mappings> <action path="/admin/maintainuser" type="gov.cbp.ace.st.tf.web.admin.action.ListUsersAction"> <forward name="default" path="admin.maintainuser.default" /> <forward name="failure" path="/admin/adminmenu" /> </action> <action path="/admin/findUsers" type="gov.cbp.ace.st.tf.web.admin.action.FindUsersAction" name="FindUsersForm" input="/admin/maintainuser"> <forward name="default" path="admin.foundusers.default" /> </action> <action path="/admin/selectUsers" type="gov.cbp.ace.st.tf.web.common.action.TFNoOpForwardAction" name="SelectUsersForm" scope="session" input="/admin/maintainuser"> <forward name="default" path="admin.selectedusers.default" /> </action> </action-mappings> </struts-config> --- Michael Jouravlev <[EMAIL PROTECTED]> wrote: > Would be nice to see your <form-beans> and <action> > definitions. > > On 6/29/06, Caroline Jen <[EMAIL PROTECTED]> > wrote: > > Yes, the second form is defined inside the > > <form-beans> and also refered in the action > mapping. > > But, the new runtime JSP error is: cannot retrieve > > definition for form bean null on action > > /admin/selectUsers.do" > > > > --Caroline > > > > --- Michael Jouravlev <[EMAIL PROTECTED]> wrote: > > > > > Make sure that you have refer to a form bean in > the > > > "selectUsers" > > > action mapping. > > > > > > On 6/29/06, Caroline Jen <[EMAIL PROTECTED]> > > > wrote: > > > > Ed, your suggestion makes sense. > > > > > > > > I have created a second form on the page by > adding > > > > <html:form action="/admin/selectUsers.do"> > before > > > the > > > > <c:forEach> and change the <html:link> to > > > > <html:submit> followed by > > > > </html:form>. The second form is defined > inside > > > the > > > > <form-beans> and also in the action mapping. > > > > > > > > This time, I got another kind of JSP runtime > > > error: > > > > "cannot retrieve definition for form bean null > on > > > > action /admin/selectUsers.do" > > > > > > > > --Caroline > > > > > > > > > > > > --- Ed Griebel <[EMAIL PROTECTED]> wrote: > > > > > > > > > The reason is that your checkbox really is > no > > > longer > > > > > in the form, so > > > > > the framework doesn't know where to pull the > > > value > > > > > from. All of the > > > > > <html> and <html-el> tags which create form > > > > > 'widgets' must be between > > > > > <html:form> and </html:form>. > > > > > > > > > > What you probably need to do is to create a > > > second > > > > > form on the page by > > > > > adding <html:form > > > action="/admin/selectUsers.do"> > > > > > before the > > > > > <c:forEach> and change the <html:link> to > > > > > <html:submit> followed by > > > > > </html:form> > > > > > > > > > > HTH, > > > > > -ed > > > > > > > > > > On 6/29/06, Caroline Jen > <[EMAIL PROTECTED]> > > > > > wrote: > > > > > > My <html-el:checkbox ....> worked fine. > But > > > if > > > > > the > > > > > > <html-el:form ....> ... </html-el:form> > come > > > > > before > > > > > > the <html-el:checkbox ... >, I got the > runtime > > > JSP > > > > > > error: "cannot find bean: > > > > > > "org.apache.struts.taglib.html.BEAN" in > any > > > > > scope". > > > > > > > > > > > > The complaint points specifically to the > > > > > > <html-el:checkbox > > > > > > > > > property="selectedUsers[${idx.index}].selected" > > > > > />. > > > > > > The getter method for > > > selectedUsers[0].selected > > > > > can no > > > > > > longer be recognized. > > > > > > > > > > > > I need help because I really do not > understand > > > why > > > > > it > > > > > > happens this way. > > > > > > > > > > > > [code]..... > > > > > > <%@ page > import="......common.pojo.user.User" > > > %> > > > > > > ...... > > > > > > ...... > > > > > > <!-- Create a variable in scope called > > > userRows > > > > > from > > > > > > the Users object --> > > > > > > <c:set var="userRows" > > > > > value="${requestScope.Users}" /> > > > > > > <c:choose> > > > > > > > > > > > > > <html-el:form > > > > > > action="/admin/findUsers.do"> > > > > > > > // > > > many > > > > > > textfields and a submit button > > > > > > > > > </html-el:form> > > > > > > > > > > > > <c:when test="${not empty > userRows}"> > > > > > > ...... > > > > > > ...... > > > > > > <!-- create a "user" > > > object > > > > > for > > > > > > each element in the userRows --> > > > > > > <c:forEach var="user" > > > > > items="${userRows}" > > > > > > varStatus="idx"> > > > > > > <tr> > > > > > <td > > > > > > align="center"> > > > > > > <html-el:checkbox > > > > > > > > > property="selectedUsers[${idx.index}].selected" > /> > > > > > > <html-el:hidden > > > > > > property="selectedUsers[${idx.index}].id" > > > > > > value="${user.id}"/> > > > > > > </td> > > > > > > </tr> > > > > > > ...... > > > > > > ...... > > > > > > </c:forEach> > > > > > > <tr> > > > > > > <td colspan="6" > align="left"> > > > > > > <html-el:link > > > > > action="/admin/selectUsers.do">Edit > > > > > > Selected Users</html-el:link> > > > > > > </td> > > > > > > </tr> > > > > > > </c:when> > > > > > > ...... > > > > > > </c:choose> > > > > > > ...... > > > > > > ...... > > > > > > [/code] > > > > > > > > > > > > > > > > > > > > > > > > > > > > __________________________________________________ > > > > > > Do You Yahoo!? > > > > > > Tired of spam? Yahoo! Mail has the best > spam > > > > > protection around > > > > > > http://mail.yahoo.com > > > > > > > > > > > > > > > > > > > > > > > > > > > --------------------------------------------------------------------- > > > > > > To unsubscribe, e-mail: > > > > > [EMAIL PROTECTED] > > > > > > For additional commands, e-mail: > > > > > [EMAIL PROTECTED] > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > --------------------------------------------------------------------- > > > > > To unsubscribe, e-mail: > === message truncated === __________________________________________________ Do You Yahoo!? Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com
package gov.cbp.ace.st.tf.web.admin.form; import java.sql.Timestamp; import java.util.Map; import java.util.HashMap; import java.util.List; import java.util.ArrayList; import java.util.Iterator; import javax.servlet.http.HttpServletRequest; import org.apache.struts.action.ActionErrors; import org.apache.struts.action.ActionMapping; import org.apache.struts.action.ActionForm; public class SelectUsersForm extends ActionForm { private Map selectedUserFieldMap = new HashMap(); private String[] selectedUsers = new String[0]; private String[] selectedUserIDs; public SelectedUserField getSelectedUsers( int index ) { SelectedUserField selectedUserField = ( SelectedUserField )selectedUserFieldMap.get( new Integer( index ) ); if ( selectedUserField == null ) { selectedUserField = new SelectedUserField(); selectedUserFieldMap.put( new Integer( index ), selectedUserField ); } return selectedUserField; } // Convenience method to get a list of selected user IDs. public String[] getSelectedUserIDs() { List theUserIDList = new ArrayList(); Iterator i = selectedUserFieldMap.values().iterator(); while( i.hasNext() ) { SelectedUserField selectedUserField = ( SelectedUserField ) i.next(); if ( selectedUserField.isSelected() ) { theUserIDList.add( selectedUserField.getId() ); } } return ( String[] )theUserIDList.toArray( new String[theUserIDList.size()] ); } public void reset( ActionMapping mapping, HttpServletRequest request) { selectedUsers = new String[0]; selectedUserIDs = new String[0]; } }
package gov.cbp.ace.st.tf.web.admin.form; import java.sql.Timestamp; public class SelectedUserField { private boolean selected = false; private Long id; public Long getId() { return id; } public void setId( Long newValue ) { id = newValue; } public boolean isSelected() { return selected; } public void setSelected( boolean newValue ) { selected = newValue; } }
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]