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

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




--
Puneet

Reply via email to