使用Thymeleaf / Spring

时间:2019-04-12 20:29:19

标签: java spring spring-boot drop-down-menu thymeleaf

我有一个包含两个字符串(ID和名称)的对象。我用两个包含ID和名称的条目填充列表。然后,我使用Thymeleaf将其传递给html页面。我希望用户从下拉列表中选择一个值。下拉列表仅显示名称,当用户单击“提交”时,我希望它返回具有名称和ID的对象的选定实例。

例如-用户选择object.Name-下一个映射将接收object.Name和object.ID,以便我可以根据此数据填充下一页。

我已经尝试了从Googling可以找到的几乎每个示例,但这些示例似乎都不符合我要尝试执行的操作,或者我已经/曾经去过那里并且错过了一些小东西。在某个时候,我尝试创建另一个容器来容纳对象,并使用th:field = * {object}和th:object = $ container。

请记住,我已将映射更改为Post,使用了ModelAttribute,Request等。

这是代码的当前迭代:

控制器:

@GetMapping(value="/reports")
    public String selectRelease(Model model){
        DBFunctions dbFunctions = new DBFunctions();
        List<TFSQueryStructure> releaseNames = new ArrayList<>();
        TFSQueryStructure tfsQueryStructure= new TFSQueryStructure();

        ResultSet rs = dbFunctions.executeQuery(ReportingQueries.returnQueryName());

        TFSQueryStructure tfsQueryStructures;
        try {
            while(rs.next()){
                tfsQueryStructures = new TFSQueryStructure();
                tfsQueryStructures.setID(rs.getString("ReleaseID").trim());
                tfsQueryStructures.setName(rs.getString("AutomationRelease").trim());
                releaseNames.add(tfsQueryStructures);
            }
        }catch(Exception e){}

        model.addAttribute("releaseNames", releaseNames);
        model.addAttribute("tfsQueryStructure", tfsQueryStructure);

        return "reports";
    }

@GetMapping("/createreport/view")   
public String retrieveReportingDataDataReview(@RequestParam("TFSQueryStructure") TFSQueryStructure tfsQueryStructure, Model model) {

        String releaseID = tfsQueryStructure.getID();
        String releaseName = tfsQueryStructure.getName();
<body>
<div class="container">
    <!--/*/ <th:block th:include="fragments/header :: header"></th:block> /*/-->
</div>

        <form action="#" class="form-horizontal" id="form" th:action="@{/web/createreport/view}" th:object="${tfsQueryStructure}" method="get">
        <div class="form-group">
            <label class="col-md-4 control-label" for="releaseName">Release Name:</label>
            <div class="col-md-4">
                <select id="releaseName" name="releaseName" class="form-control">
                    <option value="">Select Release</option>
                    <option th:each="releaseName: ${releaseNames}" th:value="${releaseName}" th:text="${releaseName.getName()}"></option>
                </select>
            </div>
        </div>

        <!-- Button (Double) -->
        <div class="form-group">
            <label class="col-md-4 control-label" for="submit"></label>
            <div class="col-md-8">
                <button id="submit" type="submit" class="btn btn-success">Submit</button>
            </div>
        </div>

我设法获得了很多结果-大多数情况下,tfsQueryStructure的值为null。在某些时候,我还遇到了字符串转换错误,验证错误等。我没有尝试任何方法,但是预期的结果是接收到整个对象,该对象具有从对象列表中获得的名称和匹配的ID。

在此先感谢您提供的帮助!

0 个答案:

没有答案