由request.setAttribute()设置的值不能由request.getParameter()获得

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

这是Java Web应用程序的一部分,该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);

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

以下两个servlet也会发生相同的问题:

int id = Integer.parseInt((String) request.getParameter("stdId"));
String code = (String) request.getParameter("subToAdd");

studentFacade.addSubject(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会出现问题。

任何建议表示赞赏。

kuaihuoniao 回答:由request.setAttribute()设置的值不能由request.getParameter()获得

您正在为请求设置属性,但使用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"));
本文链接:https://www.f2er.com/3127267.html

大家都在问