Как я могу работать с @RequestParam в JSP файле?

91
8

каждый! У меня вопрос об использовании @RequestParam в @RestController. Я хотел бы знать, как получить @RequestParam от клиента. Код сервера (@RestController):

@ResponseBody
@RequestMapping(method = RequestMethod.GET)
public ResponseEntity<List<ProjectBean>> getAllBeans(@RequestParam(name = "head") Integer headId) {
Integer head = securityService.getLoggedAccountId();
List<ProjectBean> projects = (List<ProjectBean>) projectService.getByHead(head);
return new ResponseEntity<List<ProjectBean>>(projects, HttpStatus.OK);
}

И JSP/JavaScript:

function loadProjects() {
$.ajax({
url : 'rest/projects',
method : 'GET',
headers : {
'Content-Type' : 'application/json',
},
success: function(data){
$.each(data, function(index, project) {
addProject(project);
});
}
});
}

эта функция загружает все проекты, но не с точным headId

Сущность:

@Entity
@Table(name = "projects")

public class Project {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private int id;

@Column(name = "project_name", nullable = false, length = 255)
private String projectName;

@Column(name="head")
private Integer head; //need to get projects with this value

@Column(name = "description")
private String description;

@Column(name = "photo")
private String photo;

@Column(name = "status", nullable = false, length = 200)
private String status;
}

спросил(а) 2018-04-13T11:05:00+03:00 2 года, 6 месяцев назад
1
Решение
58

По-моему, рекомендуется рекомендовать @NayoR. Но чтобы на самом деле ответить на ваш вопрос, вам нужно использовать строку запроса в js, например:

function loadProjects() {
$.ajax({
url : 'rest/projects?head=' + headId,
method : 'GET',
headers : {
'Content-Type' : 'application/json',
},
success: function(data){
$.each(data, function(index, project) {
addProject(project);
});
}
});
}

ответил(а) 2018-04-13T12:29:00+03:00 2 года, 6 месяцев назад
41

Вы можете указать путь в аннотации @RequestMapping;

@RequestMapping(method = RequestMethod.GET, path = "rest/projects/{head}")

или с @GetMapping аннотации @GetMapping:

@GetMapping(path = "rest/projects/{head}")

И используйте @PathVariable("head") вместо @RequestParam(name = "head")

Для части Javascript вы должны указать head в URL:

function loadProjects(head) {
$.ajax({
url : 'rest/projects/' + head,
method : 'GET',
headers : {
'Content-Type' : 'application/json',
},
success: function(data){
$.each(data, function(index, project) {
addProject(project);
});
}
});
}

ответил(а) 2018-04-13T11:29:00+03:00 2 года, 6 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема