request.setAttribute()设置的值不可用于request.getParameter()



我遇到一个问题,servlet接收到另一个servlet转发的请求参数为null。

这是Java Web应用程序的一部分,使用JPA和实体管理器来管理Student(id PK(实体Subject(subjectCode PK(实体多对多关系。

String code = (String) request.getParameter("subCode");
int id = Integer.parseInt((String) request.getParameter("stdToAdd"));
studentFacade.addSubject(id, code);
subjectFacade.addStudent(id,code);
request.setAttribute("subjectCode", code);
request.getRequestDispatcher("ListSubStd").forward(request, response);
String code = (String) request.getParameter("subjectCode");
System.out.println("Subject code: " + code+"n");
//this prints null when called from the above servlet code
List<Student> students = subjectFacade.getStudents(code);
Subject subject = subjectFacade.find(code);
request.setAttribute("subjectStudentList",students);
request.setAttribute("subject", subject);
request.getRequestDispatcher("ListSubjectStudents.jsp").forward(request, response);

我遇到一个问题,subjectCode在第二个servlet中被接收为null。

以下两个servlet也会出现同样的问题:

int id = Integer.parseInt((String) request.getParameter("stdId"));
String code = (String) request.getParameter("subToAdd");
studentFacade.addSubject(id, code);
subjectFacade.addStudent(id,code);
request.setAttribute("studentId", id);
request.getRequestDispatcher("ListStdSub").forward(request, response);
System.out.println("String passed is : "+request.getParameter("studentId"));
//prints null here as well, but only when called from the servlet above
int id = Integer.parseInt((String) request.getParameter("studentId"));
List subjects = studentFacade.getSubjects(id);
Student student = studentFacade.find(id);
request.setAttribute("studentSubjectList",subjects);
request.setAttribute("student",student);
request.getRequestDispatcher("ListStudentSubjects.jsp").forward(request, response);

servlet正确地编辑关系,但是发送到第二个servlet的参数存在问题。

如有任何建议,不胜感激。

您正在为请求设置属性,但使用request.getParameter((。相反,您应该使用request.getAttribute((方法

第一部分

String code = (String) request.getAttribute("subjectCode");
System.out.println("Subject code: " + code+"n");

第二部分

System.out.println("String passed is : "+request.getAttribute("studentId"));
int id = Integer.parseInt((String) request.getAttribute("studentId"));

最新更新