基本的に私が今働いているのは、学校にはいくつかの.jspがあるということです。 私はコースを追加することができ、私は学生を追加したり、特定のコースに学生を追加することもできます。私が学びたいのは、ユーザー(私)がどのような特定のコースをクリックするのか、学生だけを見せていくことです。jpaを使ってデータベースから特定のIDを取得するには?
<form action="http://localhost:8080/School/add" method="POST">
Kurs:
<select name="coursedrop">
<c:forEach items="${allCourses}" var="course">
<option value="${course.id}">${course.id}: ${course.coursename}</option>
</c:forEach>
</select>
Student:
<select name="studentdrop">
<c:forEach items="${allStudents}" var="student">
<option value="${student.id}">${student.id}: ${student.studentname}</option>
</c:forEach>
</select>
<input type="submit" value="Add"/>
</form>
上記のフォームは、コース用と学生用の2つのドロップダウンリストです。たとえば、nr.3の学生をコースnr.5にデータベースに追加することができます。だから少なくともそれは働く..
私の次のステップは、特定のコースのための特定の学生を示しています。 私が持っているのは、クリック可能なリンクとしてすべてのコースをリストする1つの.jspページです。このように:私はリンクをクリックすると
<tbody>
<c:forEach items="${allCourses}" var="course">
<tr>
<td><a href="http://localhost:8080/School/course?id=${course.id}">${course.coursename}</a></td>
</tr>
</c:forEach>
</tbody>
、coursenames別名、私は彼らが私がクリックした特定のコースに含まれていない場合でも、現在、すべての学生を一覧表示し、別の.jspページを取得します。
これは私のサーブレットの外観です。
@Inject
SchoolBoundary sb;
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
String path = request.getServletPath();
String redirect = "/home.jsp";
String forward = null;
switch(path) {
case "/student":
request.setAttribute("allStudents", sb.getAllStudents());
forward = "/student.jsp";
break;
case "/course":
request.setAttribute("allStudents", sb.getAllStudents());
forward = "/course.jsp";
break;
case "/add":
request.setAttribute("allCourses", sb.getAllCourses());
request.setAttribute("allStudents", sb.getAllStudents());
forward = "/add.jsp";
break;
case "/home":
request.setAttribute("allCourses", sb.getAllCourses());
forward = "/home.jsp";
break;
default:
request.setAttribute("allCourses", sb.getAllCourses());
forward = "/home.jsp";
}
request.getRequestDispatcher(forward).forward(request, response);
(それは恐ろしいかどうイム申し訳ありません)私は「getAllStudentsは」(私は私が必要とするが、私はどのように知らない考えるものである。)idで、学生のすべてを表示しないことを見ることができます。私の境界から そして、私の "getAllStudents":
public Set<Student> getAllStudenter() {
return new HashSet(studentFacade.findAll());
}
おさらい。私はすべてのコースのすべての生徒ではなく、それぞれのコースに入っている生徒だけを見せたいと思っています。
public Set<Student> findAllByCourseId(Long courseId) {
return new HashSet(studentFacade.findAllByCourseId(courseId));
}
が次にあなたがStudentFacade
(開く必要があります。このような何かに似て - あなたはあなたのバックエンドでfindAllByCourseId(Long courseId)
と呼ばれる方法(ないサーブレット)を実装する必要があり
の音 - 追加それをインターフェイスに追加して独自のクエリを書く(または 'findAll()'リストから結果をフィルタリングする) – ochi
これは私が必要としていたものです。私はそれを書く方法を理解できません。このバックエンドのものはすべて私にとって新しいものなので、私は暗闇の中でこの作業をするためにここで撮影します。私が使うことができるファサードからのファインド(id)メソッドがありますが、どのようにすればいいのか分かりません:(助けがあれば) – idkwat2do
'find(id)'はIDを与えられた一人の学生を見つけるでしょう。私はあなたのためにそれを書くつもりはありませんが、私はあなたに答えのヒントを与えることができます – ochi