Редирект в контроллере

154
26 июня 2019, 05:50

У меня есть таблица с компьютерами и таблица с их характеристиками.

Когда в таблице с компьютерами я нажимаю на конкретный комп, открываются его характеристики. проблема в том, что когда я пытаюсь редактировать эти характеристики, я не знаю как мне вернуться обратно к характеристикам конкретной модели. что нужно прописать в return в данном случае?

Вот мой контроллер. Внизу метод editChar, в котором необходимо правильно указать в return куда возвращаться:

 @Controller
 public class PcCharsController {
final private PcRepository pcRepository;
final private PcCharactRepository pcCharactRepository;
public PcCharsController(PcRepository pcRepository, PcCharactRepository pcCharactRepository) {
    this.pcRepository = pcRepository;
    this.pcCharactRepository = pcCharactRepository;
}
@GetMapping("pc/{id}/characts")
public String pcCharList(@PathVariable Long id, Model model) throws Exception{
    Pc pc = pcRepository.findById(id).orElseThrow(() -> new Exception("PostId " + id + " not found"));
    List<PcCharacts> pcChars = pc.getCharacts();
    model.addAttribute("model", pc.getModel());
    model.addAttribute("pcChars", pcChars);
    return "charList";
}
@PostMapping("pc/{id}/characts")
public String addChar(@RequestParam Long id,
                      @RequestParam String name,
                      @RequestParam String value,
                      Model model) throws Exception {
    Pc pc = pcRepository.findById(id).orElseThrow(() -> new Exception("PostId " + id + " not found"));
    PcCharacts pcCharacts = new PcCharacts(name, value, pc);
    pcCharactRepository.save(pcCharacts);
    List<PcCharacts> pcChars = pc.getCharacts();
    model.addAttribute("pcChars", pcChars);
    return "redirect:";
}
@GetMapping("/charact/{pcChars}")
public String editCharact(@PathVariable PcCharacts pcChars, Model model){
    model.addAttribute("pcChars", pcChars);
    return "editPcChar";
}
//HERE IS A PROBLEM
@PostMapping("pc/characts/save") //OR HERE
public String charSave(@RequestParam String name,
                       @RequestParam String value,
                       @RequestParam("id") PcCharacts pcChars){
    pcChars.setName(name);
    pcChars.setValue(value);
    pcCharactRepository.save(pcChars);
    return "redirect:/pc/{id}/characts"; //HERE
}
@GetMapping("/charact/delete/{id}")
public String deletePc(@PathVariable("id") PcCharacts pcChars){
    pcCharactRepository.delete(pcChars);
    return "redirect:/pc/{id}/";
}

}

Answer 1

По хорошему, Вам нужно сделать редирект.

Например:

return "redirect: pc/{id}/characts"

Если pc/{id}/characts у Вас маршрут для страницы с характеристиками (если нет сами подставите нужный)

Answer 2
return "redirect: pc/" + pcChars + "/characts";
READ ALSO
Добавить связь к промежуточной таблице

Добавить связь к промежуточной таблице

Возникла проблема с добавлением роли к аккаунту

130
Почему Spring Data делает лишние запросы?

Почему Spring Data делает лишние запросы?

Есть следующий метод JPA репозитория:

162
Закрепить приложение на Android

Закрепить приложение на Android

День! Есть планшет на android с установленным на нём приложением обратной связиСуть такая - лежит такой планшет на кассе в магазине и каждый желающий...

139
Почему не конвертирует

Почему не конвертирует

Ребята я создал конвертор с кириллицы на латиницуНиже предоставил код, он не выдает ошибку правильно компилирует

148