Struts Question - Can't access contents of form into form's action class after submiting form...

Posted on 2006-05-27
Last Modified: 2010-04-01
Hi experts,
This is some part my Part of Struts-config.xml
    <form-bean name="viewcartForm" type="com.pal.struts.form.ViewcartForm" />

        <forward name="viewc" path="/jsp/ViewCart.jsp"></forward>

      attribute="viewcartForm" name="viewcartForm" path="/updatecart"
      <forward name="success" path="/" />


Now in my web application there is page "viewcart.jsp" which displays all parts in cart. as follows:-
   <html:form action="updatecart" method="post">
      <table border="0" cellpadding="0" width="100%" bgcolor="#71B8FF"
      bordercolor="#000000" cellspacing="1">
      <td class=aheader align=center>      Part No.</td>
      <td class=aheader align=center>      Description</td>
      <td class=aheader align=center>      Qty</td>
      <td class=aheader align=right>Unit-Price($)</td>
      <td class=aheader align=right>Sub-Total($)</td>
      <td class=aheader align=center> <html:image src="../images/RFQ.gif" value="Move To Enquiry Cart" property="rfqbtn"

alt='Move To RFQ Cart'/></td>
      <td class=aheader align=center> <html:image src="../images/Del_Parts.gif" value="Delete from Cart" property="delbtn"

alt='Delete from Cart'/></td></tr>
            <logic:iterate name="viewcartForm" property="cartdata"      id="partsincart">
            <bean:define id="units" name="partsincart" property="qty" type="java.lang.Double" />
            <bean:define id="unitprice" name="partsincart" property="unit_price" type="java.lang.Double" />                  

            <%      Double sub_ttl;      %>
            <td class=cartevenrow><bean:write      name="partsincart" property="partid" /></td>
            <td class=cartevenrow><bean:write      name="partsincart" property="partdesc" /></td>
            <td class=cartevenrow><bean:write      name="partsincart" property="qty" /></td>
            <td class=cartevenrow><bean:write      name="partsincart" property="rfqpart" /></td>
            <td class=cartevenrow><%=((Double) pageContext.getAttribute("units")).doubleValue() * ((Double)

pageContext.getAttribute("unitprice")).doubleValue() %></td>                                          
            <td class=cartevenrow>      <logic:equal name="partsincart" property="rfqpart" value="true">
            <html:checkbox name="partsincart" property="checkedforrfq" /></logic:equal></td>
            <td class=cartevenrow>      <html:checkbox name="partsincart" property="checkedfordel" />      </td>                  

            </tr>      </logic:iterate>                                    
& My (formbean) is as follows:-

public class ViewcartForm extends ActionForm {

      private CartSessionData[] cartdata=new CartSessionData[0];
      //CartSessionData is my ValueObject Class
      private CartSessionData cartdata1=new CartSessionData();
      private String rfqbtn;
      private String delbtn;

      public CartSessionData[] getCartdata() {
            return cartdata;

      public void setCartdata(CartSessionData[] cartdata) {

            this.cartdata = cartdata;

      public String getDelbtn() {
            return delbtn;

      public void setDelbtn(String delbtn) {

            this.delbtn = delbtn;

      public String getRfqbtn() {
            return rfqbtn;

      public void setRfqbtn(String rfqbtn) {
            this.rfqbtn = rfqbtn;

& on Clicking on Submit Buttons I am calling action "updatecart.
Now in I am not able to aceess contents of my ViewcartForm to which I want to process in
Some code of my is as follows:-
      public ActionForward execute(
                  ActionMapping mapping,
      ActionForm form,
  HttpServletRequest request,
 HttpServletResponse response) {

                        HttpSession session=request.getSession();
                        ViewcartForm viewcartForm = (ViewcartForm) form;
                        System.out.println("Size of Carts Items========="+ viewcartForm.getCartdata().length);

                        System.out.println("UserID is:--"+userid);            

Now in above code of on the line no. 5 ie.,
System.out.println("Size of Carts Items========="+ viewcartForm.getCartdata().length);

It is giving me length of CartData as '0' though at present there are 3 items in my ViewCartForm that I can  View in my

ViewCart.jsp Page.
I think here the values in the formbean are not getting transferredf from ViewCart.jsp to UpdateCartAction.
Where I am wrong? As I acnt access to any content of my formbean on updatecartaction I am not able to manipulate it at all in

my updatecartaction.
Please tell me what shoul I do so that I can Access the contents of "ViewCartForm" in UpdatecartAction ?

Thanx in advance.
Question by:Econify
    LVL 14

    Expert Comment

    You have configured the action "/viewcart" to use scope "request", so the formbean "viewcartForm" will be stored in request attribute. Whereas the action "/updatecart" is using the scope "session", the formbean "viewcardForm" is store in session.

    If you want to get the cartdata which is stored during the action "/viewcart" in action "/updatecart", you have to use scope session for action "/viewcart", so both action use the same formbean from httpsession.

    Boon Leng

    Author Comment

    I tried this solution before. But Problem with this solution is that I am getting all the values of original "viewcartForm" when it is first time populated. & When I am checking any of the checkbox corresponding to each of parts in my ViewCart.jsp page I am getting its value in updatecartAction as "false" instead of true. I think here my updatecart action is not getting modified values of checkbox. How should i get list of all the parts in my ViewCart.jsp for which checkbox are checked?

    Currently when I am using session attribute for my viewcartForm form-bean , I am getting all the values of checkboxes as false. Though I am checking some of them.
    Why this is happening?

    Please tell me
    Thanx in advance.
    LVL 14

    Expert Comment

    Just notice you are using nested beans in the formbean, so will need to use the struts <nested> tag.

    <nestedc:iterate name="viewcartForm" property="cartdata" >
              <nested:checkbox  property="checkedfordel" />

    LVL 14

    Accepted Solution

    Here is a tutorial on how to use the nested tag.

    Featured Post

    How to run any project with ease

    Manage projects of all sizes how you want. Great for personal to-do lists, project milestones, team priorities and launch plans.
    - Combine task lists, docs, spreadsheets, and chat in one
    - View and edit from mobile/offline
    - Cut down on emails

    Join & Write a Comment

    Suggested Solutions

    Outlook Free & Paid Tools
    I've been asked to discuss some of the UX activities that I'm using with my team. Here I will share some details about how we approach UX projects.
    In this seventh video of the Xpdf series, we discuss and demonstrate the PDFfonts utility, which lists all the fonts used in a PDF file. It does this via a command line interface, making it suitable for use in programs, scripts, batch files — any pl…
    Polish reports in Access so they look terrific. Take yourself to another level. Equations, Back Color, Alternate Back Color. Write easy VBA Code. Tighten space to use less pages. Launch report from a menu, considering criteria only when it is filled…

    729 members asked questions and received personalized solutions in the past 7 days.

    Join the community of 500,000 technology professionals and ask your questions.

    Join & Ask a Question

    Need Help in Real-Time?

    Connect with top rated Experts

    18 Experts available now in Live!

    Get 1:1 Help Now