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) 个答案