我正在学习Spring MVC Showcase项目,可从STS仪表板下载
我有以下情况,但我并不完全清楚:
我有以下表格:
<form id="readForm"action="<c:url value="/messageconverters/form" />" method="post">
<input id="readFormSubmit"type="submit"value="Read Form Data"/>
</form>
与id="readForm"的表单的提交操作相关,我有以下Jquery函数,它简单地执行一个AJAX调用,将两个经过验证的文本变量隐藏在请求的主体字段中:**foo=bar和Fru=apple
$("#readForm").submit(function() {
var form = $(this); // Contiene il riferimento all'elemento form submittato
// Contiene il riferimento all'emento input all'interno del form (il bottone)
var button = form.children(":first");
$.ajax({
type: "POST", // Tipo di Request: POST
// URL specificato dall'attributo "action" del form: "/messageconverters/form"
url: form.attr("action"),
// Dati che vengono passati all'interno del campo body dell'HTTP Request, 2 variabili
data: "foo=bar&fruit=apple",
// Tipo di media type accettabile dalla response
contentType: "application/x-www-form-urlencoded",
dataType: "text", // Tipo di dati passato dalla HTTP Request
success: function(text) { // Caso di successo:
MvcUtil.showSuccessResponse(text, button);
},
error: function(xhr) { // Caso di errore:
MvcUtil.showErrorResponse(xhr.responseText, button);
}
});
return false;
});
我的控制器类处理此请求的方法如下:
@RequestMapping(value="/form", method=RequestMethod.POST)
public @ResponseBody String readForm(@ModelAttribute JavaBean bean) {
return "Read x-www-form-urlencoded: " + bean;
}
好的,该方法将使用@ModelAttribute注释注释的JavaBean对象作为输入参数。
看看定义JavaBean类的示例内部,我有:
@XmlRootElement
public class JavaBean {
@NotNull
private String foo;
@NotNull
private String fruit;
public JavaBean() {
}
public JavaBean(String foo, String fruit) {
this.foo = foo;
this.fruit = fruit;
}
// GETTER e SETTER METHOD
}
因此JavaBeans包含两个属性,它们与我提交表单时生成的HTTP请求中传递的表单变量同名
阅读@ModelAt⃣注释留档(http://static.springsource.org/spring/docs/3.1.x/javadoc-api/org/springframework/web/bind/annotation/ModelAttribute.html),我发现我可以使用它来注释方法,也可以使用它来注释方法参数。
我的情况是第二种情况,对于这种情况,我可以阅读:将方法参数或方法返回值绑定到命名模型属性的注释,暴露给web视图
那么到底是什么意思呢?
我认为,如果我用这个注释来注释一个方法参数,这意味着如果在HTTP请求体中传递的变量名称与我的注释对象的变量匹配,Spring会自动将这个变量的值复制到在注释对象中具有相同名称的属性中
但我不确定这一点...
有人能帮我理解好这个东西吗?
Tnx安德里亚
我的回答可能很晚,但我正在研究同样的问题,发现了这个有趣的链接。
它给出了在方法级使用@ModelAttribute()的理解,这与@SessionAttribute注释配合得很好。http://www . intertech . com/Blog/understanding-spring-MVC-model-and-session-attributes/
我不这么认为。@ModelAttory与HTTP请求参数无关。当您注释方法参数时,例如:
public String foo(@ModelAttribute ("petKey") Pet pet){
}
您将有一个来自控制器模型对象的“宠物”对象。Spring会在模型地图对象中搜索“宠物键”。
当您注释您的方法时,例如:
@ModelAttribute ("petKey")
public Pet foo(){
return new Pet;
}
在执行方法并从方法返回后,Spring会将“new Pet”作为值,将“petKey”作为键放入模型对象(map)中。
问题内容: 我刚刚开始在Java 8中使用注释,并得到了一些意外的结果。 我有这样的方法: 我编写了一个JUnit测试,为参数searchList传递了空值。我原以为会发生某种类型的错误,但好像没有注释就通过了。这是预期的行为吗?据我了解,这是允许您跳过编写样板空检查代码。 对于@NotNull应该做什么的解释将不胜感激。 问题答案: 和自己做什么。它们应该充当文档工具。 该注释提醒您在以下情况下
我编写了一个JUnit测试,为参数searchingList传入null值。我原以为会发生某种类型的错误,但结果好像注释不在那里一样。这是意料之中的行为吗?根据我的理解,这是允许您跳过编写样板空校验代码。 如果能解释一下@NotNull到底应该做什么,将会非常感谢。
我正在学习Spring核心认证,我对SpringMVC如何处理REST网络服务有些怀疑。 阅读留档我发现了这个例子: 好的,它显示了2SpringMVC方法(我认为应该将其声明为控制器类,是真的吗)。 这些方法都处理对 /orders 资源的 HTTP 请求(根据 REST 样式,其中资源被视为管理一种数据和状态并提供此类处理的编程元素)。 在这种情况下,如果对 /订单的 HTTP 请求是 GET
问题内容: 我在Spring领域还很陌生,我开发了一个简单的项目,该项目使用Spring 3.2.1和Hibernate 4.1.9来实现DAO。该项目可以正常工作,但是我对在此DAO的CRUD方法上使用 @Transactional Spring批注有一些疑问。 这是实现我的项目的CRUD操作的类的完整代码: 好的,正如您所看到的,使用@Transactional注释对某些方法进行了注释。 我在
今天,我正在研究可从STS仪表板下载的Spring MVC展示 我对Spring 3.2版本引入的新注释@MatrixVariable以及URI路径中Matrix变量的使用有些怀疑。 在我的家中.jsp视图我有以下链接: 此处阅读有关@MatrixVariable注释的官方文档:http://static.springsource.org/spring-framework/docs/3.2.0.M
这是实现我的项目的CRUD操作的类的整个代码: 好的,正如您所看到的,使用@Transactional注释对一些方法进行了注释。 我正在阅读官方文档http://static.springsource.org/spring/docs/3.2.x/spring-framework-reference/html/transaction.html中关于该注释在方法上的使用,它看到了:使用@transac