Java 在这种情况下,如何在jsp中传递参数
我的数据库结构如下: 这是控制器Servlet的doGet(),如下所示:Java 在这种情况下,如何在jsp中传递参数,java,jsp,Java,Jsp,我的数据库结构如下: 这是控制器Servlet的doGet(),如下所示: protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { getSubjects(request, response); } 而getSubjects(请求、响应)是: 希望你现在能理解我的问题
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
getSubjects(request, response);
}
而getSubjects(请求、响应)是:
希望你现在能理解我的问题
更新
我是这样调试的:
private void getSubjects(HttpServletRequest request,
HttpServletResponse response) throws ServletException{
try {
List<Subject> subjects = subjectDAO.subjectList();
List<Page> pages = null;
for (int i = 0; i < subjects.size(); i++) {
pages = pageDAO.topicList(subjects.get(i).getSubjectId());
System.out.println("List id is " + subjects.get(i).getSubjectId());
for (int i = 0; i < subjects.size(); i++) {
pages = pageDAO.topicList(subjects.get(i).getSubjectId());
System.out.println("List id is " + subjects.get(i).getSubjectId());
for (int j = 0; j < pages.size(); j++) {
System.out.println("Topics are " +pages.get(j).getTopicName());
}
}
}
request.setAttribute("subjects", subjects);
request.setAttribute("pages", pages);
getServletContext().getRequestDispatcher("/content.jsp").forward(
request, response);
} catch (Exception e) {
throw new ServletException("Cannot obtain subjects from DB", e.getCause());
}
}
这是正确的,但不能得到这项工作
<c:forEach items="${pages}" var="page">
<li
<c:catch>
<c:choose>
<c:when test="${page.pageId == param.topic_id}">...
好的,我必须执行类似的任务。
我使用了一个控制器servlet。然后是一个数据库对象,它使用类来处理从数据库中检索数据的过程。
您似乎没有检查发送到servlet的“action”参数
if (action.equalsIgnoreCase("getTopic")){
int SubjectId = Integer.parseInt(request.getParameter("SubjectId"));
dao.getTopic(SubjectId);
forward = "myjsp.jsp";
request.setAttribute("subjects", dao.getAllSubjects());
} else if (action.equalsIgnoreCase("listSubjects")){
forward = "myjsp.jsp";
request.setAttribute("categories", dao.getAllSubjects());
} else {
forward = "myjsp.jsp";
}
RequestDispatcher view = request.getRequestDispatcher(forward);
view.forward(request, response);
}
如果要从地图获取页面,请尝试以下方法(未测试):
private void getSubjects(HttpServletRequest请求,HttpServletResponse响应)
抛出ServletException{
试一试{
List subjects=subjectDAO.subjectList();
列表页=空;
Map subjectPageMap=null;
if(subjects!=null&&subjects.size()>0){
subjectPageMap=新建HashMap();
用于(主题:主题){
pages=pageDAO.topicList(subject.getSubjectId());
pages=pages!=null&&pages.size()>0?pages:new ArrayList();
subjectPageMap.put(subject.getSubjectId(),pages);
}
}
request.setAttribute(“主题”,主题);
setAttribute(“subjectPageMap”,subjectPageMap);
getServletContext().getRequestDispatcher(“/view.jsp”).forward(
请求、答复);
}捕获(例外e){
抛出新的ServletException(“Error”,例如getCause());
}
}
您好,对不起,您的问题是什么?当您获取主题时,传递第一个主题id以在第一次加载页面时获取其页面,然后当更改主题时,传递主题id以返回操作并相应地获取页面。@JohnHogan请查看我的更新内容question@ParkashKumar请参阅我更新的问题request.getParameter(“subc\u id”)
Map subjectPageMap=null
在Map处出错您的主体的数据类型是什么?我键入的是String
唉!但我还是没收到回信,伙计!但为什么呢?若你们的方法(pageDAO.topicList)对于给定的主题运行良好,那个么它应该填充地图。尝试调试代码并找到问题的根源。共享异常,如果您无法处理。
List<Page> pages = pageDAO.topicList(subjectId);
request.setAttribute("pages", pages);
private void getSubjects(HttpServletRequest request,
HttpServletResponse response) throws ServletException{
try {
List<Subject> subjects = subjectDAO.subjectList();
List<Page> pages = null;
for (int i = 0; i < subjects.size(); i++) {
pages = pageDAO.topicList(subjects.get(i).getSubjectId());
System.out.println("List id is " + subjects.get(i).getSubjectId());
for (int i = 0; i < subjects.size(); i++) {
pages = pageDAO.topicList(subjects.get(i).getSubjectId());
System.out.println("List id is " + subjects.get(i).getSubjectId());
for (int j = 0; j < pages.size(); j++) {
System.out.println("Topics are " +pages.get(j).getTopicName());
}
}
}
request.setAttribute("subjects", subjects);
request.setAttribute("pages", pages);
getServletContext().getRequestDispatcher("/content.jsp").forward(
request, response);
} catch (Exception e) {
throw new ServletException("Cannot obtain subjects from DB", e.getCause());
}
}
List id is 1
Topics are App User Interface
List id is 2
Topics are Java Basics
Topics are OOP
List id is 3
List id is 4
<c:forEach items="${pages}" var="page">
<li
<c:catch>
<c:choose>
<c:when test="${page.pageId == param.topic_id}">...
if (action.equalsIgnoreCase("getTopic")){
int SubjectId = Integer.parseInt(request.getParameter("SubjectId"));
dao.getTopic(SubjectId);
forward = "myjsp.jsp";
request.setAttribute("subjects", dao.getAllSubjects());
} else if (action.equalsIgnoreCase("listSubjects")){
forward = "myjsp.jsp";
request.setAttribute("categories", dao.getAllSubjects());
} else {
forward = "myjsp.jsp";
}
RequestDispatcher view = request.getRequestDispatcher(forward);
view.forward(request, response);
}
private void getSubjects(HttpServletRequest request, HttpServletResponse response)
throws ServletException{
try {
List<Subject> subjects = subjectDAO.subjectList();
List<Page> pages = null;
Map<String, ArrayList<Page>> subjectPageMap = null;
if(subjects!= null && subjects.size() > 0){
subjectPageMap = new HashMap<String, ArrayList<Page>>();
for(Subject subject : subjects){
pages = pageDAO.topicList(subject.getSubjectId());
pages = pages != null && pages.size() > 0 ? pages : new ArrayList<Page>();
subjectPageMap.put(subject.getSubjectId(), pages);
}
}
request.setAttribute("subjects", subjects);
request.setAttribute("subjectPageMap", subjectPageMap);
getServletContext().getRequestDispatcher("/view.jsp").forward(
request, response);
} catch (Exception e) {
throw new ServletException("Error ", e.getCause());
}
}