有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java从Spring控制器中的多个select获取值

因此,我有一个带有多个<;选择>;。这个<;选项>;使用js从textArea中的用户输入生成(选项是json的键)

以下是HTML:

<form th:action="@{/converter}" method="POST" accept-charset="UTF-8" modelAttribute="selectedValues">
    <textarea id="ta" name="textArea" rows="10" cols="30" placeholder="Write your JSON array here"></textarea>          
    <select id="select" multiple class="form-control select-checkbox" name="selectedValues"></select>       
    <button type="submit" name="submit" class="btn btn-primary btn-block">Convert</button>
</form>

将选项添加到<;选择>;:

<script>
    var sb = document.querySelector('#select');
    var ta = document.querySelector('#ta');
    ta.onchange = (event) => {
        // Remove options
        removeOptions(sb);
        event.preventDefault();
        
        // Get JSON input in the textarea
        var jsonString = ta.value;
        var json = JSON.parse(jsonString);

        // For each key of the first element of the JSON, add an option
        Object.keys(json[0]).forEach(key => {
            var option = document.createElement("option");
            option.value = key;
            option.text = key;
            sb.appendChild(option);
        });
        
    }
    
    function removeOptions(selectElement) {
        var i, L = selectElement.options.length - 1;
        for(i = L; i >= 0 ; i--) {
            selectElement.remove(i);
        }
    }

</script>

以及控制器:

@RequestMapping(value = "${converter.path}", method = RequestMethod.POST, produces = { MediaType.TEXT_HTML_VALUE })
public String postConverter(Model model, @RequestParam String textArea, @ModelAttribute("selectedValues") ArrayList<String> selectedValues) {
    
    System.out.println(selectedValues);
    
    // business logic
    
    return "jsontocsv";
}

如果我在选项中选择了一个元素(foo),则系统将被删除。出来println(selectedValues)将显示[foo]。这就是我想要的

但如果在选项(foo和bar)中选择多个元素,它将再次显示[foo],而不是[foo,bar]

所以,问题是我在controller方法中得到的列表只有一个元素,即使我选择了很多

如何获取选定的值?谢谢大家!


共 (0) 个答案