2017-02-04 16 views
-1

私の目標は、選択した会社ごとのすべての従業員のリストを取得することです。 あなたが質問の最後に、JSPファイルで見ることができるように、私はエラーを取得する:java jsp選択したアイテムごとにリストを取得

{IndirectList: not instantiated} 

あなたが選択した会社ごとに全従業員のリストを取得するために私を助けてくださいだろうか?

Company.java

package analysis.data; 
import java.io.Serializable; 
import java.lang.Integer; 
import java.lang.String; 
import java.util.List; 

import javax.persistence.*; 

/** 
* Entity implementation class for Entity: Company 
* 
*/ 
@Entity 
public class Company implements Serializable { 

    @Id 
    @GeneratedValue 
    private Integer id; 

    @Column(unique=true, nullable=false) 
    private String lastname; 

    @OneToMany(mappedBy="company", fetch=FetchType.LAZY) // LAZY = fetch when needed, EAGER = fetch immediately 
    private List<Employee> employees; 

    private static final long serialVersionUID = 1L; 

    public Company() { 
     super(); 
    } 
    public Integer getId() { 
     return this.id; 
    } 

    public void setId(Integer id) { 
     this.id = id; 
    } 

    public String getLastname() { 
     return this.lastname; 
    } 

    public void setLastname(String lastname) { 
     this.lastname = lastname.toUpperCase(); 
    } 

    public List<Employee> getEmployees() { 
     return this.employees; 
    } 
} 

Employee.java私controller.java

public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { 

.... 

     } else if (methode.equals("get") && action.equals("/detailsCompany")) { 
      doDetailsCompany(request, response); 
.... 

    private void doDetailsCompany(HttpServletRequest request, HttpServletResponse response) 
      throws ServletException, IOException { 
     int id = Integer.valueOf(request.getParameter("id")); 
     Company company = CompanyDAO.retrieveById(id); 
     request.setAttribute("company", company);  
     loadJSP(urlDetailsCompany, request, response); 
    } 
.... 

内側と私のCompanyDAO.java内部

package analysis.data; 
import java.io.Serializable; 
import javax.persistence.Column; 
import javax.persistence.Entity; 
import javax.persistence.GeneratedValue; 
import javax.persistence.Id; 
import javax.persistence.ManyToOne; 

/** 
* Entity implementation class for Entity: Company 
* 
*/ 
@Entity 
public class Employee implements Serializable { 

    @Id 
    @GeneratedValue 
    private Integer id; 

    @Column(nullable=false) 
    private String firstname; 

    @Column(nullable=false) 
    private String lastname;  

    @ManyToOne 
    private Company company; 

    private static final long serialVersionUID = 1L; 

    public Employee() { 
     super(); 
     //nbAbsences = 0; 
    } 

    public Integer getId() { 
     return this.id; 
    } 

    public void setId(Integer id) { 
     this.id = id; 
    } 
    public String getFirstname() { 
     return this.firstname; 
    } 

    public void setFirstname(String firstname) { 
     this.firstname = firstname; 
    } 
    public String getLastname() { 
     return this.lastname; 
    } 

    public void setLastname(String lastname) { 
     this.lastname = lastname; 
    } 

    public Company getCompany() { 
     return this.company; 
    } 

    public void setCompany(Company company) { 
     this.company = company; 
     if (!company.getEmployees().contains(this)) { 
      company.getEmployees().add(this); 
     } 
    } 

    @Override 
    public String toString() { 
     return "[" + this.getId() + "] " + this.getFirstname() + " " + this.getLastname(); 
    } 
} 

public class CompanyDAO { 

... 

    public static Company retrieveById(int id) {    
      EntityManager em = GestionFactory.factory.createEntityManager(); 
      Company company = em.find(Company.class, id); 
      em.close(); 
      return company; 
     } 

... 

    public static List<Company> getAll() { 
     EntityManager em = GestionFactory.factory.createEntityManager(); 
     Query q = em.createQuery("SELECT c FROM Company c"); 
     @SuppressWarnings("unchecked") 
     List<Company> listCompany = q.getResultList();  
     return listCompany; 
    } 
} 

と、ここで私は会社名(ID)はその会社の全従業員を見てdetailsCompanyにリダイレクトされるように選択します。

<jsp:useBean id="companys" type="java.util.List<analysis.data.Company>" scope="request"/> 

    <table> 
     <tr> 
      <th>Company Name</th> 
      <th>Number of employees</th> 
      <th>Employees</th> 
     </tr> 
    <% for (Company company : companys) {%> 
     <tr> 
      <td><%=company.getNom()%></td> 
      <td><%=company.getEmployees().size()%></td> 
      <td><a href="<%= getServletContext().getContextPath()%>/do/detailsCompany?id=<%=company.getId()%>">See the list</a></td> 
     </tr> 
    <% } %> 
    </table> 

、最終的には私の detailsCompany.jsp JSPファイル内に、私はどのように上の損失で午前選択した会社ごとに従業員のリストを取得します。

<jsp:useBean id="company" type="java.util.List<analysis.data.Company>" scope="request"/> 

<p>Company : <%=company.getEmployees()%></p> 

私はこの {IndirectList:インスタンス化されていない}取得する代わりに、従業員のリストの を。 私のコードが正しいかどうかわかりません。 「:インスタンス化されていないIndirectList」

あなたが従業員を印刷したい場合は

+1

私は夕方全体の質問を読むでしょう。あなたは私たちに同情していますか? – Andremoniy

答えて

2

問題が

`<%=company.getEmployees()%>` 

のGetEmployees()JSPのメッセージになり、そのToString関数を呼び出すように、Listオブジェクトを返すとあります詳細(つまり、そのtoStringメソッドの等価)、あなたの代わりにこのような何かをしたいことがあります。

`<p>Company : <% List<Employee> employees = company.getEmployees(); 
    for(i=0;i<employees.size();i++)%> 
     <%= employees.get(i);%> 
</p> 
` 

あなたはまたsのいくつかの改行を追加することもできますさまざまな従業員の記録とは異なる。

関連する問題