1

I want to use dropdown and getting the value in drop down from database, dropdown should contain company code for saving purpose & company description for display purpose.

Below is my code:

Bean Class:

package com.ims.master.company.bean;

public class CompanyBean {

        private String id;
        private String cmpCode;
        private String cmpDes;
        private String cmpStatus;
        private String cmpCreated;

        public CompanyBean(String cmpCode, String cmpDes) {
            super();
            this.cmpCode = cmpCode;
            this.cmpDes = cmpDes;
        }

        public String getId() {
            return id;
        }
        public void setId(String id) {
            this.id = id;
        }
        public String getCmpCreated() {
            return cmpCreated;
        }
        public void setCmpCreated(String cmpCreated) {
            this.cmpCreated = cmpCreated;
        }
        public String getCmpCode() {
            return cmpCode;
        }
        public void setCmpCode(String cmpCode) {
            this.cmpCode = cmpCode;
        }
        public String getCmpDes() {
            return cmpDes;
        }
        public void setCmpDes(String cmpDes) {
            this.cmpDes = cmpDes;
        }
        public String getCmpStatus() {
            return cmpStatus;
        }
        public void setCmpStatus(String cmpStatus) {
            this.cmpStatus = cmpStatus;
        }
}

DAO class:

package com.ims.master.company.DAO;

import java.util.ArrayList;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import com.ims.hibernate.HibernateUtil;
import com.ims.master.company.bean.CompanyBean;


public class CompanyDAO {

    SessionFactory factory = HibernateUtil.getFactory();
    Session session = factory.openSession();
    ArrayList<CompanyBean> recList = new ArrayList<CompanyBean>();

    @SuppressWarnings("unchecked")
    public ArrayList<CompanyBean> retrieveCmpCode()
    {
        System.out.println("=====inside DAO======");
        Query query = session.createQuery("select b.cmpCode,b.cmpDes from CompanyBean b where b.cmpStatus=:val");
        query.setParameter("val", "Y");
        recList = (ArrayList<CompanyBean>) query.list();
        System.out.println("=====value====="+recList);
        return recList;
    }
}

Action Class:

package com.ims.master.masterData;

import java.util.ArrayList;
import com.ims.master.company.DAO.CompanyDAO;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
import com.opensymphony.xwork2.Preparable;

public class MasterLookUp extends ActionSupport {

    ArrayList companyCode;
    public String getCompany()
    {
        CompanyDAO companyCodeValue = new CompanyDAO();
        companyCode = companyCodeValue.retrieveCmpCode();
        return SUCCESS;
    }
    public ArrayList getCompanyCode() {
        return companyCode;
    }
    public void setCompanyCode(ArrayList companyCode) {
        this.companyCode = companyCode;
    }


}

jsp:

<s:select name="companyName" list="companyCode" key="label.companyName" listKey="cmpCode" listValue="cmpDes"/>

Please suggest me how the value will come in drop down. Also suggest that how the value in drop down will be displayed selected in edit part.

Roman C
  • 49,761
  • 33
  • 66
  • 176
Ravi Kukreja
  • 157
  • 1
  • 2
  • 10

2 Answers2

1

You can't cast returned value to ArrayList<CompanyBean>, because Hibernate in your case converts the data returned by the query to List<Object[]>. To return List<CompanyBean> you can use another query.

You need to open the Hibernate session to execute the query, and when you have done with it you should close the session. You don't have to close a session only if it's managed by other tool. You can find a detailed explanation how to use Hibernate session in How to display a list of database records (retrieved via Hibernate) to a JSP page in Struts 2, and linked answer.

The query could return List<CompanyBean> if you change the query and property type, so you can assign a value without casting.

public class CompanyDAO {

    public List<CompanyBean> retrieveCmpCode() throws Exception
    {
        System.out.println("=====inside DAO======");
        SessionFactory factory = HibernateUtil.getFactory();
        Session session = factory.openSession();
        List<CompanyBean> recList;
        try {
            Query query = session.createQuery("from CompanyBean b where b.cmpStatus=:val");
            query.setParameter("val", "Y");
            recList = query.list();
            System.out.println("=====value====="+recList);
            return recList;
        } finally {
          session.close();
        }
    }
} 

Note: @SuppressWarnings("unchecked") no longer needed.

In the JSP you should bind the select tag to the action property that returns a List<CompanyBean>, similar like you have done already.

<s:select name="companyName" list="companyCode" key="label.companyName" listKey="cmpCode" listValue="cmpDes"/>

The action

public class MasterLookUp extends ActionSupport {

    private List<CompanyBean> companyCode;
    public List<CompanyBean> getCompanyCode()  {
        return companyCode;
    }
    public void setCompanyCode(List<CompanyBean> companyCode) {
        this.companyCode = companyCode;
    }

    private String cmpCode;
    public String getCmpCode() {
        return cmpCode;
    }
    public void setCmpCode(String companyCode) {
        this.cmpCode = cmpCode;
    }

    public String getCompany() throws Exception
    {
        CompanyDAO companyCodeValue = new CompanyDAO();
        companyCode = companyCodeValue.retrieveCmpCode();
        return SUCCESS;
    }

}

Note: to get/set default/selected value of the select tag you should provide cmpCode property.

Community
  • 1
  • 1
Roman C
  • 49,761
  • 33
  • 66
  • 176
0

you can use below code in your JSP

<html:select property ="cmpDes">
    <html:optionsCollection name ="cmpDes" /> 
    </html:select>

When above code is added in ur JSP , your dropdown will have the cmp description which is fetched from DB.

And below is site which has perfect example to learn struts-1 and is also related to your question for getting some ideas to go on. http://www.javabeat.net/struts-html-optionscollection-tag-htmloptionscollection/

Aleksandr M
  • 24,264
  • 12
  • 69
  • 143
dishanm
  • 110
  • 1
  • 11