DB からマネージャーと従業員の名前のリストを保持する List コレクションがあります。そして、ドロップダウンリストにプロジェクトリストを保持する別のリストがあります... 1つのプロジェクトが選択されると、テーブル内のこのプロジェクトの従業員とマネージャーに従ってテーブルを作成する必要があります...たとえば...
ドロップダウンから選択したAndroidAppプロジェクト次に、このようなマネージャーと従業員の名前を持つテーブルを作成する必要があります... HTMLテーブル... jstlで作成しようとしましたが、できませんでした。
|manager| Employee|
Susan | John
Susan | Joe
Susan | Megan
私は Java プラットフォームで web-app projecet を開発しています。それを行うには、サーブレット、JSP、DB があります。私はリストなどをコーディングしました。この時点での問題は、html コーディングでしょうか、それとも他に何が考えられるでしょうか? 私のコード...
プロジェクトである関連JSPページ...
<%@page import="com.eteration.leavesystem.model.Person"%>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ page import="java.io.*,java.util.*,java.sql.*"%>
<%@ page import="javax.servlet.http.*,javax.servlet.*"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
<%@ page session="true" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<form action="">
<select name="projects" multiple>
<option value="volvo">Volvo</option>
<option value="saab">Saab</option>
<option value="opel">Opel</option>
<option value="audi">Audi</option>
</select> <input type="submit" value="Kaydet">
</form>
<br>
<script
src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js">
</script>
<script>
$(function(){
$("#addProject").click(function(){
$(this).next().slideToggle();
});
});
</script>
<button id="addProject">Proje Ekle</button>
<div style="display:none;">
<form action="./UserProjectServlet" method="POST">
<input type="text" name="AddedProject" /><br/>
<button class="hidden">Ekle</button>
</form>
</div>
<form action="./PopulateProjectServlet" method="get">
<select name="selectedProject" id="selectedProject" onchange= "this.form.submit()" >
<c:forEach items="${projects}" var="project">
<option value="${project.code}">${project.desc}"</option>
</c:forEach>
<table border="1" cellpadding="5">
<caption><h2>List of users</h2></caption>
<tr>
<th>Manager</th>
<th>Employees</th>
</tr>
<c:forEach items="${projectTable}" var="projectTable">
<tr>
<td><c:out value="${projectTable.pm.name}" /></td>
<td><c:out value="${projectTable.e.name}" /></td>
</tr>
</c:forEach>
</table>
</select>
</form>
</body>
</html>
プロジェクトをドロップダウンにリストし、そこから選択した値の ID を取得することに成功しました。次に、onchange メソッドを実行して、名前を持つプロジェクト情報を一覧表示しました。
プロジェクトテーブル情報(名前)をリストする私の結果クラス
public class ProjectResultTableView {
static mysqlCon con=new mysqlCon();
public static List<ProjectTable> getProjectInfo(String projectId) throws SQLException {
List<ProjectTable> projectTableList = new ArrayList<ProjectTable>();
String query = "SELECT distinct e.name AS employee_name, pm.name AS manager_name FROM project_employee AS pe LEFT OUTER JOIN employee AS e ON e.employee_id = pe.employee_id LEFT OUTER JOIN project AS p ON p.project_id = pe.project_id LEFT OUTER JOIN employee AS pm ON pm.employee_id = p.manager_id WHERE pe.project_id =" +projectId+ " ;";
Statement stmt = con.getConnection().createStatement();
ResultSet rs = stmt.executeQuery(query);
if(rs!=null){
while (rs.next()) {
projectTableList.add(new ProjectTable(rs.getString("pm.name"),rs.getString("e.name")));
}
}
con.getConnection().close();
return projectTableList;
}
}
私のサーブレット
@WebServlet("/ProjectResultServlet")
public class ProjectResultServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public ProjectResultServlet() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
try {
String selectedProject = request.getParameter("selectedProject");
List<ProjectTable> projectTable = ProjectResultTableView.getProjectInfo(selectedProject);
request.setAttribute("projectTable", projectTable);
request.getRequestDispatcher("/UserHome/Projects.jsp").forward(request, response);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
request.getRequestDispatcher("/UserHome/Projects.jsp").forward(request, response);
}
}
だから、htmlコードのjstlか何かだと思います。さらに間違いがある場合は、私を助けてください..私の質問は、ボタンを送信せずに、選択したプロジェクトに従ってテーブルを作成する方法です。onchange などを使用したいのですが、同じことをしたいです :) よろしくお願いします...