- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
首先,我想说,我已经在 SO(和其他地方)上阅读了许多有关此错误的问题和答案,但对这个特定案例没有帮助。
我的简单 Spring MVC Web 应用程序的场景是这样的:用户根据 String 属性 indexNumber 搜索学生 (searchStudent.jsp)。 indexNumber 由用户输入的其他 3 个属性组成:programId、rollNumber、rollYear。例如,如果programId =“M5”,rollNumber =“10”和rollYear =“2013”,则indexNumber将为“M5 10/13”。这是在 View 中完成的。 indexNumber是每个学生的唯一标识符,但不是PK。重要提示:搜索学生并加载适当的页面本身就可以正常工作。
如果学生不存在,addAfterSearchStudent.jsp 页面应该加载用户在 searchStudent.jsp 中输入的预填充值(programId、rollNumber、indexNumber) - 我不想让用户输入此数据两次。我编写了下面的代码,我认为它会完全按照我在此处描述的方式进行操作,但我收到了上述错误。当我对这些属性进行硬编码并尝试保存数据时,这也可以正常工作。我相信问题在于将参数从一个jsp传递到另一个jsp。
这些是我的 Controller 的处理程序方法:
/**
* Handles and retrieves the search student page
*/
@RequestMapping(value="/search", method = RequestMethod.GET)
public String getSearchStudent(Model model) {
logger.debug("Received request to show search student page");
model.addAttribute("index", new Student());
model.addAttribute("programList", programService.getAll());
return "searchStudent";
}
/**
* Searches for a student by delegating the processing to StudentService.
*/
@RequestMapping(value="/search", method = RequestMethod.POST)
public String postSearchStudent(@RequestParam(value = "program.programId") String programId,
@RequestParam(value = "rollNumber") String rollNumber,
@RequestParam(value = "rollYear") String rollYear,
@RequestParam(value = "indexNumber") String indexNumber,
Model model) {
logger.debug("Received request to search for a student");
model.addAttribute("program.programId", programId);
model.addAttribute("rollNumber", rollNumber);
model.addAttribute("rollYear", rollYear);
model.addAttribute("indexNumber", indexNumber);
// Call StudentService to do the actual searching
Student student = studentService.search(indexNumber);
// if student isn't in the db load addAfterSearchStudent.jsp, else load student.jsp
if (student == null)
return "addAfterSearchStudent";
else
return "student";
}
/**
* Handles and retrieves the add (after search) student page
*/
@RequestMapping(value="/addSearch", method = RequestMethod.GET)
public String getAddSearchStudent(@RequestParam(value = "program.programId") String programId,
@RequestParam(value = "rollNumber") String rollNumber,
@RequestParam(value = "rollYear") String rollYear,
@RequestParam(value = "indexNumber") String indexNumber,
Model model) {
logger.debug("Received request to show add (after search) student page");
Student student = new Student();
student.setRollNumber(rollNumber);
student.setRollYear(rollYear);
student.setIndexNumber(indexNumber);
Program program = programService.get(programId);
student.setProgram(program);
model.addAttribute("student", student);
return "addAfterSearchStudent";
}
/**
* Adds a new student after search by delegating the processing to StudentService.
* Displays a confirmation JSP page
*/
@RequestMapping(value="/addSearch", method = RequestMethod.POST)
public String postAddSearchStudent(@ModelAttribute("student") Student student) {
logger.debug("Received request to add new student after search");
// Call StudentService to do the actual adding
studentService.addAfterSearch(student);
// resolves to /WEB-INF/jsp/success/addStudentSuccess.jsp
return "/success/addStudentSuccess";
}
这是 searchStudent.jsp:
<c:url var="searchUrl" value="/essays/main/student/search" />
<form:form modelAttribute="index" method="POST" action="${searchUrl}">
...
这是 addAfterSearchStudent.jsp:
<c:url var="saveUrl" value="/essays/main/student/addSearch" />
<form:form commandName="student" method="POST" action="${saveUrl}">
...
我知道这很长,但我想呈现所有相关信息。有人知道我在哪里犯了错误吗?
最佳答案
<form:form commandName="student" ...>
您的 addAfterSearchStudent.jsp
需要一个名为“student”的对象。在您的 postSearchStudent()
方法中,您不会向模型中添加一个。
if (student == null)
return "addAfterSearchStudent";
您需要创建一个 Student
对象并添加它,就像在 getAddSearchStudent()
方法中执行的操作一样。
Student student = new Student();
student.setRollNumber(rollNumber);
student.setRollYear(rollYear);
student.setIndexNumber(indexNumber);
Program program = programService.get(programId);
student.setProgram(program);
model.addAttribute("student", student);
关于java - BindingResult 和 bean 名称 'student' 的普通目标对象都不能作为请求属性 - Spring MVC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20693347/
你能比较一下属性吗 我想禁用文本框“txtName”。有两种方式 使用javascript,txtName.disabled = true 使用 ASP.NET, 哪种方法更好,为什么? 最佳答案 我
Count 属性 返回一个集合或 Dictionary 对象包含的项目数。只读。 object.Count object 可以是“应用于”列表中列出的任何集合或对
CompareMode 属性 设置并返回在 Dictionary 对象中比较字符串关键字的比较模式。 object.CompareMode[ = compare] 参数
Column 属性 只读属性,返回 TextStream 文件中当前字符位置的列号。 object.Column object 通常是 TextStream 对象的名称。
AvailableSpace 属性 返回指定的驱动器或网络共享对于用户的可用空间大小。 object.AvailableSpace object 应为 Drive 
Attributes 属性 设置或返回文件或文件夹的属性。可读写或只读(与属性有关)。 object.Attributes [= newattributes] 参数 object
AtEndOfStream 属性 如果文件指针位于 TextStream 文件末,则返回 True;否则如果不为只读则返回 False。 object.A
AtEndOfLine 属性 TextStream 文件中,如果文件指针指向行末标记,就返回 True;否则如果不是只读则返回 False。 object.AtEn
RootFolder 属性 返回一个 Folder 对象,表示指定驱动器的根文件夹。只读。 object.RootFolder object 应为 Dr
Path 属性 返回指定文件、文件夹或驱动器的路径。 object.Path object 应为 File、Folder 或 Drive 对象的名称。 说明 对于驱动器,路径不包含根目录。
ParentFolder 属性 返回指定文件或文件夹的父文件夹。只读。 object.ParentFolder object 应为 File 或 Folder 对象的名称。 说明 以下代码
Name 属性 设置或返回指定的文件或文件夹的名称。可读写。 object.Name [= newname] 参数 object 必选项。应为 File 或&
Line 属性 只读属性,返回 TextStream 文件中的当前行号。 object.Line object 通常是 TextStream 对象的名称。 说明 文件刚
Key 属性 在 Dictionary 对象中设置 key。 object.Key(key) = newkey 参数 object 必选项。通常是 Dictionary 
Item 属性 设置或返回 Dictionary 对象中指定的 key 对应的 item,或返回集合中基于指定的 key 的&
IsRootFolder 属性 如果指定的文件夹是根文件夹,返回 True;否则返回 False。 object.IsRootFolder object 应为&n
IsReady 属性 如果指定的驱动器就绪,返回 True;否则返回 False。 object.IsReady object 应为 Drive&nbs
FreeSpace 属性 返回指定的驱动器或网络共享对于用户的可用空间大小。只读。 object.FreeSpace object 应为 Drive 对象的名称。
FileSystem 属性 返回指定的驱动器使用的文件系统的类型。 object.FileSystem object 应为 Drive 对象的名称。 说明 可
Files 属性 返回由指定文件夹中所有 File 对象(包括隐藏文件和系统文件)组成的 Files 集合。 object.Files object&n
我是一名优秀的程序员,十分优秀!