Как создать фильтр на основе того, что я выбрал в нескольких раскрывающихся списках? - PullRequest
0 голосов
/ 26 октября 2018

У меня около 15 раскрывающихся списков, и я хочу вернуть объекты в базе данных, которые совпадают с выбранными в раскрывающемся списке.Мне удалось отобразить данные в выпадающих списках с помощью Thymeleaf и Spring, а затем я сделал запрос POST, где получил то, что выбрал.Я не знаю, как сделать с jpa методы на складах, которые дают мне объекты из базы данных.

Контроллер

@GetMapping("/filter/functionality/misramessages")
    public String filterFunctionality(Model model) {

        model.addAttribute("misraMessages", misraMessagesService.findAllMisraMessagesFromDb());
        model.addAttribute("mistraObjectSelected", new MisraMessages());

        return "functionality";
    }

    @PostMapping("/filter/functionality/misramessages")
    public String getFilterFunctionalityResult(@PathVariable(name = "buidId", required=false) Build buildId,
                                               @RequestParam(name = "fileName", required=false) String fileName,
                                               @RequestParam(name = "filePath", required=false) String filePath,
                                               @RequestParam(name = "messageNumber", required=false) String messageNumber,
                                               @RequestParam(name = "messageSeverity", required=false) String messageSeverity,
                                               @RequestParam(name = "guidelineNumber", required=false) String guidelineNumber,
                                               @RequestParam(name = "guidelineName", required=false) String guidelineName,
                                               @RequestParam(name = "guidelineType", required=false) String guidelineType,
                                               @RequestParam(name = "guidelineSeverity", required=false) String guidelineSeverity,
                                               @RequestParam(name = "requirement", required=false) String requirement,
                                               @RequestParam(name = "sourceCodeCategory", required=false) String sourceCodeCategory,
                                               @RequestParam(name = "safety", required=false) String safety,
                                               @RequestParam(name = "functionality", required=false) String functionality,
                                               @RequestParam(name = "subFunctionality", required=false) String subFunctionality,
                                               @RequestParam(name = "applicationType", required=false) String applicationType,
                                               @RequestParam(name = "supplier", required=false) String supplier,
                                               @RequestParam(name = "cmVersion", required=false) String cmVersion,
                                               @RequestParam(name = "asilLevel", required=false) String asilLevel) {


 }

Выпадающие

 <form action="#" th:action="@{/filter/result}" method="post">

        <!-- Filter Build-->
        <div class="form-group row">
            <label for="build" class="col-sm-2 col-form-label">Build</label>
            <div class="col-sm-10">
                <select class="form-control"  name="buildId" id="build">
                    <option th:value="0" text="Please Select"></option>
                    <option  th:each = "misra : ${misraMessages}"
                             th:value="${misra.buildId.buildId}"
                             th:text="${misra.buildId.buildId}">
                    </option>
                </select>
            </div>
        </div>

        <!-- Filter File Name-->
        <div class="form-group row">
            <label for="fileName" class="col-sm-2 col-form-label">File Name</label>
            <div class="col-sm-10">
                <select class="form-control"  name="fileName" id="fileName">
                    <option th:value="0" text="Please Select"></option>
                    <option  th:each = "misra : ${misraMessages}"
                             th:value="${misra.fileName}"
                             th:text="${misra.fileName}">
                    </option>
                </select>
            </div>
        </div>
           ..........
           ..........
           ..........
</form>

1 Ответ

0 голосов
/ 26 октября 2018

Поскольку ваш вопрос слишком широкий, я не могу дать вам конкретного ответа, но постараюсь дать вам общее представление.

Сначала вам нужно понять, как работает JPA.Решите, что вы хотите использовать, например.hibernate, spring data, jdbc, mybatis и т. д. В Интернете вы можете найти множество руководств по использованию JPA.

Сначала вам нужно создать класс POJO со всеми атрибутами.Этот POJO класс выглядит примерно так

public class MyClass{

private String filename;
private String filePath;
...
//getters setters
}

Я бы объединил все RequestParam как map.Это не обязательно, но делает ваш код чистым, потому что у вас много RequestParam.

 @PostMapping("/filter/functionality/misramessages")
        public String getFilterFunctionalityResult(@PathVariable(name = "buidId", required=false) Build buildId,@RequestParam Map<String,String> requestParams){
// your code here
}

Теперь вы можете установить все значения RequestParam на POJO

Myclass myClass = new Myclass();
myclass.setFileName(requestParams.get("fileName"));
...

вам нужно создать @Service и @Repository классы, которые будут обрабатывать всю логику и логику вашего уровня обслуживания для взаимодействия с базой данных.На spring.io есть прекрасные примеры.Попробуйте провести там некоторое время.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...