2017-08-28 65 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

相關問題