My head hurts. :) Thanks for everyone's help. I've gotten a number of responses, it's just that I'm still confused. It's obvious I have something drastically wrong with my understanding of the workflow of Struts, so I'd like to clear that up now.
Let's take my list page, ListRoles.jsp: <html:form action="/EditRoles" method="GET"> <html:hidden property="actionCode" /> <html:hidden property="roleId" /> <c:if test="${fn:length(roles) > 0}"> <table class="list"> <tr> <th>Name</th> <th>Description</th> </tr> <c:forEach items="${roles}" var="role" step="1"> <tr> <td><c:out value="${role.name}" /></td> <td> <c:out value="${role.description}" /> </td> <td> <html:link href="(some javascript)"> Edit </html:link> </td> <td> <html:link href="(some javascript)"> Delete </html:link> </td> </tr> </c:forEach> </table> </c:if> </html:form> This form lists all roles in the system. Next to each role, there are two links: one to edit the role, and the other to delete it. These links simply execute some javascript that populate the hidden form fields and then submit the form. When the form is submitted, the form bean is populated. Here is the form bean (EditRolesForm.java): public class EditRolesForm extends ActionForm { private static final long serialVersionUID = 0; public static final String ADD_ACTION_CODE = "add"; public static final String DELETE_ACTION_CODE = "delete"; public static final String EDIT_ACTION_CODE = "edit"; private String actionCode; private int roleId; public String getActionCode() { return actionCode; } public int getRoleId() { return roleId; } public void setActionCode(String actionCode) // some validation done here, and the action // code is then set } public void setRoleId(int roleId) { this.roleId = roleId; } } Nice and simple. :) Now, when the form is submitted, and as I understand it, *after* the form bean is populated, the execute method is called for the Action class. Here is my the Action class I created for this action (EditRolesAction.java): public class EditRolesAction extends TransactionAction { public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { EditRolesForm editRolesForm = (EditRolesForm) form; // at this point, I believe the form is // *already* populated. // do some computation, place the correct // role in the request scope, and determine // the correct forward request.setAttribute("role", role); return mapping.findForward(...); } } So now, assuming the user has asked to do an edit, the EditRole.jsp is generated: <html:form action="/EditRole" method="POST"> <table> <tr> <td>Name:</td> <td><html:text property="name" value="${role.name}" /></td> </tr> <tr> <td>Description:</td> <td> <html:textarea property="roleDescription" value="${role.description}" /> </td> </tr> <tr> <td>blah</td> <td><html:checkbox ???? /></td> </tr> <tr> <td> </td> <td><html:submit value="Submit" /></td> </table> </html:form> Here is the EditRoleForm form bean: public class EditRoleForm { private int id; private String name; private String description; private boolean permissionA; private boolean permissionB; ... private boolean permissionN; } So the question is... I *don't* have access to the EditRoleForm form bean in the EditRolesAction Action class; there, it's the EditRolesForm form bean (sorry about the confusing terminology; just node that EditRoles refers to modifying the roles in some aspect, and EditRole refers to editing a specific role). Albert Sapp Wrote: "I am puzzled by your comment that you don't have a form bean before you get to the jsp. We do this all the time. Say I want to display a list of inventory items for a user. I retrieve a list of inventory items matching the query data the user gave me and create an array of inventory item forms to pass to the jsp. I convert information from the list inventory item beans and place each one into the array. Then just set the array as a parameter in request scope and then use that parameter to build my jsp. I do the same if I am providing a means for a user to update information on an item. I initialize the form in the prep action, display the jsp and read the form in the processing action. So I read/write to the same inventory item form bean and read/write to my DAO inventory item bean for the backend. The only reason I use 2 different beans is it was mandated to separate the view from the model and I need to convert some data say the unit of issue ID to a actual unit of issue for the user." I guess the question is... sure, I can provide the request scope with the necessary information. In this case, the request scope has the Role object as an attribute. Are you saying that at the top of the EditRole.jsp page I initialize the form bean myself, using servlets? Or is this "prep" action something else? I guess I'm not sure where to do this, as I am confused. If you can edit my code, or at least hint at where I need to do this initialization, it would be greatly appreciated. Laurie Harper Wrote: "Yes you do, the form is passed in as one of the parameters to execute()." Isn't this the form bean that was populated *after* it has been submitted? I need the form bean that is going to be used to create the next JSP page. She continues: "The typical pattern is for the action to be invoked via an action mapping, populate the form bean and forward to the JSP. It's during this action processing that you copy your business data into the form bean, thus initializing it. The form in the JSP is then bound to the form bean, both reading from and writing to the same place. When the form is submitted, another action is invoked and in that action you copy the appropriate data from the form to wherever you need it to complete the operation." So it sounds like I might be missing an action here... I need two Actions per JSP? One before the JSP is generated, and one after? How do I do this? "To answer your earlier question, you *can* have a form which takes its values from a bean other than the form bean -- I think you've already had that working for some input types. However, in the case of checkboxes, that's going to be problematic, since the input's value is doing double duty -- it's specifying the value that should be submitted *if* the checkbox is selected, and also specifying the value that the checkbox property must have for it to be considered selected already. If you don't want to copy the permission data from your model into the form bean before rendering the form, " I would like to do this... just don't know how.... "you can do as previously suggested and put the entire business object into the form bean; that solution actually doesn't prevent the properties being written/updated. There are problems with this approach for certain types of inputs, but for boolean values rendered as checkboxes it should work fine." Thanks again for everybody's help. I'm sorry I just don't quite understand yet what it is I have to do (thought this would originally be a simple question!). I think small code snippets would be the most useful in me understanding what I have to do, because right now, I *think* I understand the concepts... just don't know the syntax, and the web/my book aren't terribly helpful. Thanks again, your help is greatly appreciated. Anthony Frasso __________________________________________________ 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]