2017-08-28 936 views
0

我目前正在学习Spring,并且在不同的例子中不断碰到这个问题,但我没有发现任何解释的任何地方{@} @RequestMapping(value =“/ delete/{id}”)中的{id}是什么意思

我还发现

return "redirect:/delete/{id}" 

我明白ID是一个变量,但它有什么作用。正是从这个例子http://www.javainterviewpoint.com/spring-mvc-crud-example-mysql/

控制器

@RequestMapping(value = "/delete/{id}") 
public ModelAndView deleteEmployee(@ModelAttribute("employee") Employee employee,@PathVariable("id") int id) 
{ 
    employeeDAO.deleteEmployee(id); 

    return new ModelAndView("redirect:/employees"); 
} 

型号

package com.javainterviewpoint; 

import java.io.Serializable; 

public class Employee implements Serializable 
{ 
private static final long serialVersionUID = -1280037900360314186L; 

private Integer id; 
private String name; 
private Integer age; 
private String dept; 
public Employee() 
{ 
    super(); 
} 
public Employee(Integer id, String name, Integer age, String dept) 
{ 
    super(); 
    this.id = id; 
    this.name = name; 
    this.age = age; 
    this.dept = dept; 
} 
public Integer getId() 
{ 
    return id; 
} 
public void setId(Integer id) 
{ 
    this.id = id; 
} 
两者

@RequestMapping(value = "/delete/{id}") 

@RequestMapping(value = "/delete") 

之间的区别

+2

您所采取的阅读[参考指南](时间https://docs.spring.io/spring/docs/current/spring-framework-reference/html/mvc.html#mvc-ann-requestmapping-uri-templates)? –

+0

我没有意识到这一点。谢谢 – Adi

回答

3

@RequestMapping(value = "/delete/{id}")表示您可以删除具有特定ID的员工。完整的请求可以是,例如:http://yourSite.com/delete/42 然后,您可以看到@PathVariable("id") int id - 这意味着变量id将包含来自url的值。 有了这个形式给出,你可以做这样的事情:

/doSomething/{someUserName}/{someValue}/{someId} 

,你将有:

@PathVariable("someUserName") String someUserName, @PathVariable("someValue") String id, @PathVariable("id") int id 

又如:enter image description here

+0

非常感谢 – Adi

3

这是一个PathVariable,例如,当您有用户并且您需要编辑或删除一个用户时,您可以使用它。这会告诉spring方法你点击了哪个用户。

有关更多说明,请参阅Spring MVC guide的部分URI模板模式。

通过这种方法您连接用户您呼叫的URL的id和Spring将地图中的网址找到你的方法定义的变量的ID deleteEmployee@PathVariable("id") int id

例如,你可以调用deleteEmployee方法与此网址:

http://yourUrl/delete/12345

然后employeeDAO.deleteEmployee(id);的通话将被用为12345 ID来执行

+1

非常感谢。可惜堆栈只允许我选择一个答案。 – Adi