On 8/30/06, Anthony N. Frasso <[EMAIL PROTECTED]>
wrote:
Hello all,
public class Role {
private int id;
private String name;
private String description;
private boolean permissionA;
private boolean permissionB;
...
private boolean permissionN;
}
Each of those properties has getter and setter
methods. By the way, in the *actual* Role class,
the
permission booleans are named such things as
"canAccessProjects" and "canEditCustomers" and
other
such actual permissions, which is why I am not
using
an array of booleans in this case. I want to
refer to
them by name.
Now I wanted to create a JSP that contained a
form,
that allowed a user to edit a role. Here is the
definition of my form bean (called EditRoleForm):
public class EditRoleForm extends ActionForm {
private boolean roleId;
private boolean roleName;
private boolean roleDescription;
private boolean rolePermissionA;
private boolean rolePermissionB;
...
private boolean rolePermissionN;
}
I kinda dont understand why do you need 2 beans as
long as u only care about
reading from them.
you could have somehting like this in your form
bean
public class EditRoleForm extends ActionForm {
Role role = new Role();
/*getter method*/
}
and then in your jsp you have
<html:text property="role.name" />
Permission A: <html:checkbox
property="role.permissionA" />
you dont need to specify a value explicitly, it
loads the field with
whatever value the property has.
In this instance, the form bean looks quite similar
to
the role bean.
In my JSP, I have the following:
<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>Permission A:</td>
<td><html:checkbox
property="rolePermissionA"
value="true" /></td>
</tr>
<tr>
<td>Permission B:</td>
<td><html:checkbox
property="rolePermissionB"
value="true" /></td>
</tr>
...
<tr>
<td>Permission N:</td>
<td><html:checkbox
property="rolePermissionN"
value="true" /></td>
</tr>
<tr>
<td></td>
<td><html:submit value="Submit" /></td>
</table>
</html:form>
As you can see, all of the checkboxes are going to
be
initialized blank. I would instead prefer them to
be
initialized with the value in the role within the
request scope. I was able to do this using the
"value" parameter in the text and textarea tags,
but
the value parameter is used differently for the
checkbox tag.
I hope this clears it up.
One final note: After reading everyone's
responses,
and also reading around on the web, I seem to be
getting an idea that the name of the property in
the
Role bean and the Form bean should be identical,
and
this is the way it is able to initialize the value
in
the checkbox, and also set the correct value in
the
form bean when it is submitted. This seems like a
bad
idea. For one, how do we know that there is a
one-to-one mapping of beans to form beans? If I'm
modifying a few beans all on the same JSP page, I
certainly don't want there to be confusion.
I hope I've made myself clear, and I look forward
to
everyone's response. I really appreciate the time
and
effort everyone has taken in helping me out thus
far.
Regards,
Anthony Frasso
__________________________________________________
Do You Yahoo!?
Tired of spam? Yahoo! Mail has the best spam
protection around
http://mail.yahoo.com