DennisKingsman
@DennisKingsman
Студент

Как обработать значение в контроллере из выпадающего списка?

Здравствуйте, на html странице я получаю значение из списка (id растения)
<form th:action="@{'/plantAdd/'+${boxId}}" method='POST'>
    <table>
        <tr>
            <td>Select plant :</td>
            <td>
                <select name="neededId">
                    <option value=""> -- </option>
                    <option th:each="plant : ${plants}"
                            th:value="${plant.id}"
                            th:utext="${plant.name}">
                    </option>
                </select>

            </td>
        </tr>

        <tr>
            <td><input name="submit" type="submit" value="submit" /></td>
        </tr>
    </table>
</form>

далее по этому id я буду искать в контроллере(реализовывать там всякую логику) там сейчас многое осталось от моих предыдущих попыток получить id
вот как мне в этих контроллерах его получить?
@RequestMapping(value = "/plantAdd/{boxId}", method = RequestMethod.GET)
    public String plantAdd(Model model,
                           @PathVariable(name = "boxId") Long boxId){

        List<MyPlantNamesExp> listPlantNames = myPlantNameExpDAO.getNames();
        MyPlantNamesExp test = listPlantNames.get(0);
        logger.info("Add method : " + test.toString());

        model.addAttribute("ddForm", new DropDownForm());

        model.addAttribute("plants", listPlantNames);

        return "addPlant";
    }

    @RequestMapping(value = "/plantAdd/{boxId}", method = RequestMethod.POST)
    public String plantAdd(Model model, DropDownForm ddForm,
                           @PathVariable(name = "boxId") Long boxId) throws ResourceNotFoundException {
      //  logger.info("from user action : " + Long.parseLong(ddForm.getPlantName(), 10));
        logger.info("value from request");
        Plant plant = new Plant();
        Long id = Long.parseLong(ddForm.getPlantName(), 10);

        plant.setResponsibleGrowBox(growBoxService.findById(boxId));
        plant.setMyPlantId(myPlantService.findById(id).getId());

        return "addPlant";
    }
  • Вопрос задан
  • 112 просмотров
Решения вопроса 1
azerphoenix
@azerphoenix Куратор тега Java
Java Software Engineer
Здравствуйте!

Напишу примерный код, вы уже адаптируйте под себя.
В контроллере из дропдоун вы можете получить, как сам объект, так и id объекта, а потом в БД найти этот объект по ID.

Вариант с поиском объекта по ID:
Plant plant = plantRepository.findById(id);
Можете использовать Optional, чтобы избежать NPE. Optional<Plant>
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы