我无法为第二个请求获取ModelAtort。我的第一个请求是initForm()方法,我准备了命令对象并能够在jsp中显示命令。
通过initForm()我正在填充命令,并在执行ajax调用时在editForm中填充所需的命令。
这是我的Spring表格
<form:form method="POST" action="addstudentdetails.htm" commandName="command">
Ignore what is inside this
Name: Shoaib Age:23 <a href="#" onclick="editstudentdetails(1,0)">edit</a>
</form:form>
我的ajax请求:
function editStudentDetails(studentId,index){
$.ajax(
{url:"editstudentdetails.htm",
method:"GET",
data:{"action":"edit","id":studentId,"index":index},
success: function(data) {
jQuery("#studentDetailsDiv").html(data)
}
}
)
}
在editStudentDetails()方法中,我有方法ajax调用来调用控制器的editForm()。
这是我的控制器:
@Controller
public class StudentDetailsController {
@Autowired
private StudentDetailsDAO studentDetailsDAO;
@RequestMapping(value="/studentdetails.htm",method = RequestMethod.GET)
public String initForm(HttpServletRequest request,ModelMap map){
String action=request.getParameter("action");
StudentDetailsCommand command=new StudentDetailsCommand();
System.out.println("in controller"+action);
command.setStudents(studentDetailsDAO.findAll());
map.addAttribute("command", command);
return "studentdetails";
}
@RequestMapping(value="/editstudentdetails.htm",method = RequestMethod.GET)
public String editForm(ModelMap map,HttpServletRequest request){
map.addObject("index", request.getParameter("index"));
StudentDetailsCommand command=(StudentDetailsCommand)map.get("command");
System.out.println(command);
System.out.println(command.getStudents());//NullPointerException here.
map.addObject("command", command);
return "studentdetails";
}
}
甚至尝试了@ModelAttribute(“studentDetailsCommand”),但没有成功。
我是Spring 3.0的新手,我遵循了这里给出的所有解决方案,但都无效。有人能帮我吗?
模型属性仅在一个HttpServletRequest的生命周期内存在。考虑在这里阅读我的答案。
在initForm方法中,可以执行以下操作
map.addAttribute("command", command);
这将向模型属性添加一个名为“command”的属性。该属性最终将进入HttpServletRequest属性,并可用于JSP。在这里
<form:form [...] modelAttribute="studentDetailsCommand" commandName="command">
首先,modelAttribute和commandName具有相同的目的,即在模型中查找属性。如果删除commandName,则会出现异常,因为没有名为studentDetailsCommand的模型属性。此处,您的命令名的值将覆盖您的模型属性的值。
当Servlet容器完成呈现JSP时,呈现的内容将作为HTTP响应的主体发送。此时,请求已被处理,HttpServletRequest和模型属性被垃圾收集。
当您通过AJAX发送新请求时,不再有任何名为studentDetailsCommand的模型属性(实际上从来没有)。
考虑使用Flash属性。
相关:
我被卡住了。我一直在尝试不同的方法将6个头像字符串的结果加载到picturebox控件数组的加载方法中。 这就是我必须迭代(mysql结果集)值字符串到pictureboxes的内容 但是每个图片框都显示为白色(空白)。如果我将SQL查询设置为LIMIT 1,我将为每个图片框获得相同的第一个头像。但它不会相应地分配,或者根本不会。 我如何才能循环到我的6个图片框正确的网址?谢谢你们 编辑 我也尝试
我们将laravel应用程序用于服务器站点restful应用程序。我们有一个存储数据的MySql数据库。为了访问数据,我们使用了laravel模型。有时我们可能需要创建自定义属性或使用访问器和变异器操作属性。事情是这样的。有时我们需要使用访问器从多个属性计算数据。例如,如果该表包含一个名为“到期日”的字段,并且我们希望定义一个自定义属性来指示到期日是否已过,那么我们将使用如下自定义属性: 我的问题
我有一个Java类,它从JSON文件/数据库/其他东西加载我的应用程序的属性。 我已将配置为Spring上下文中的bean。 现在我想在spring上下文文件中使用中的一个值来表示不支持SpEL的内容,例如spring集成日志通道适配器,例如。 是否有一种方法可以设置可以使用SpEL填充的“属性”?
问题内容: 我想将JPA2 Criteria API与元模型对象一起使用,这似乎很简单: 但是这个Root.get总是抛出一个。是由Hibernate自动生成的,看起来像 但显然从未有人居住。 我是否缺少框架初始化步骤? 编辑: 这是崩溃时我如何使用JPA和元模型的摘要: (是一个类,所以我就在前面)和相关的堆栈跟踪: 编辑2: 在JBoss EntityManager指南中,我可以看到 当构建H
下面是Verzeichnisdaten类: 此代码属于Verzeichnisdaten。上面有更多的代码,但现在不相关了。
问题内容: 我有一个带有created_by字段的模型,该模型链接到标准Django用户模型。保存模型时,我需要使用当前用户的ID自动填充它。我无法在Admin层执行此操作,因为该网站的大部分内容都不会使用内置的Admin。谁能建议我该怎么做? 问题答案: 如果你希望某些东西在管理员和其他地方都可以使用,则应使用自定义模型形式。基本思想是重写该__init__方法以采用一个额外的参数-reques