Я искал высоко и низко на этом форуме и в Google, но безуспешно пытался прочитать выбранные значения из динамически генерируемого списка в стиле Bootstrap.
Это код страницы JSP [reports01.jsp]:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ page isELIgnored="false"%>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Contract-wise Report Selection</title>
<link href="<c:url value='/static/css/bootstrap.css' />"
rel="stylesheet"></link>
<link href="<c:url value='/static/css/app.css' />" rel="stylesheet"></link>
<script src="https://code.jquery.com/jquery-1.12.4.min.js"></script>
<script>
function myFunction() {
var selectedvalue = $("#mySelect option:selected").val();
}
</script>
</head>
<body>
<div class="generic-container">
<%@include file="authheader.jsp"%>
<div class="well lead">Contract-wise Report Selection</div>
<form:form method="POST" modelAttribute="reports01"
action="reportDetailed01" class="form-horizontal">
<form:input type="hidden" path="id" id="id" />
<div class="row">
<div class="form-group col-md-12">
<label class="col-md-3 control-lable" for="contractMap">Contracts
to Select</label>
<div class="col-md-7">
<form:select id="mySelect" path="contractMap"
onChange="myFunction" items="${contractList}" multiple="true"
class="form-control input-sm" />
<div class="has-error">
<form:errors path="contractMap" class="help-inline" />
</div>
</div>
</div>
</div>
<button type="button" onclick="myFunction()">Try it</button>
<div class="row">
<div class="form-actions floatRight">
<input type="submit" value="Print" class="btn btn-primary btn-sm" />
or <a href="<c:url value='/' />">Cancel</a>
</div>
</div>
<div class="well">
<a href="<c:url value='/' />">Back to Menu</a>
</div>
</form:form>
</div>
</body>
</html>
И это часть кода контроллера, из-за которого у меня нет проблем с динамическим заполнением списка.
/**
* This method will list all contracts for selection.
*/
@RequestMapping(value = { "/reportDetailed01" }, method = RequestMethod.GET)
public String showContractsForReports01(ModelMap model) {
ReportForm01 rf01 = new ReportForm01();
Map<Integer, String> contractList = contractService.findAllContracts01();
System.out.println(contractList);
System.out.println("========= GET ================");
model.addAttribute("reports01", rf01);
model.addAttribute("contractList", contractList);
model.addAttribute("loggedinuser", getPrincipal());
return "reports01";
}
Однако, когда я пытаюсь прочитать значения, выбранные из списка, результирующий вывод будет нулевым.Ниже приведен код, с помощью которого я пытаюсь прочитать выбранные значения из списка в JSP.
/ ** * Этот метод получит все контракты после выбора.* / @RequestMapping (value = {"/ reportDetailed01"}, method = RequestMethod.POST) // public ModelAndView getContractsForReports01 (@ModelAttribute (value = "reports01") ReportForm01 reportForm01, BindingResult bindingResult) {публичная строка String getConormFestFortFortSourceFortResFortStoreRTortFortStoreResTortFortsTortsFortStore, BindingResult bindingResult, запрос HttpServletRequest) {
System.out.println("=====================xxx=================");
System.out.println(reportForm01.getContractMap());
return "redirect:/reportDetailed01";
}
Это модель домена для формы:
public class ReportForm01 implements Serializable {
private static final long serialVersionUID = 1L;
private Integer Id;
private Map<Integer,String> contractMap = new HashMap<Integer, String>();
private Map<Integer, String> selectedContractMap = new HashMap<Integer, String>();
public Map<Integer,String> getContractMap() {
return contractMap;
}
public void setContractMap(Map<Integer,String> contractMap) {
this.contractMap = contractMap;
}
public Integer getId() {
return Id;
}
public void setId(Integer id) {
Id = id;
}
public Map<Integer, String> getSelectedContractMap() {
return selectedContractMap;
}
public void setSelectedContractMap(Map<Integer, String> selectedContractMap) {
this.selectedContractMap = selectedContractMap;
}
}
Я просмотрел эти сообщения: Как получить выбранное значение из выпадающего списка выбора начальной загрузки Как получить несколько выбранных значений из поля выбора в JSP? Передать объект из выпадающего списка (.jsp) в контроллер
Но, похоже, ничего не работает.
Я подозреваю, что мне может не хватать скрипта для обработки выбора пользователя.Любая помощь будет высоко ценится.