Spring MVC - Set\Populate 带有 Japascript 对象的 JSTL\JSP 对象的内容

Spring MVC - Set\Populate the content of a JSTL\JSP object with a Japascript object

我想通过 Spring MVC 项目中的 javascript 对象设置 jstl/jsp 对象的值,这个问题可能已经提出了,但我不是在网上找到任何满意的答案,我刚开始使用 Spring MVC 所以也许这是一个愚蠢的问题,简而言之,我想用 Array/Object 的内容填充 jstl ModelAtrribute 集合的内容java脚本。

这些是我想使用的 类 java:

Marker.java

public class Marker  {

private String name;
private String url;
private String latitude;
private String longitude;
private String popupContent;

public Marker(){}

public Marker(String name,String url,String latitude,String longitude,String popupContent){
    this.name = name;
    this.url = url;
    this.latitude = latitude;
    this.longitude = longitude;
    this.popupContent = popupContent;
}
//Getter and setter
}

MarkerList.java

@JsonIgnoreProperties(ignoreUnknown = true)
public class MarkerList  implements Serializable {

List<Marker> markers;

public List<Marker> getMarkers() {
    return markers;
}

public void setMarkers(List<Marker> markers) {
    this.markers= markers;
}

}

控制器Marker.java

@Controller
@PreAuthorize("hasRole('ROLE_USER')")
public class MarkerController {

//Autowired and setting of all other variables.
//Call the page JSP.
@RequestMapping(value="/map",method= RequestMethod.GET)
public String loadMap2(Model model){
    model.addAttribute("markerList",markerList);
    return "riconciliazione2/mappa/leafletMap";
}
 @RequestMapping(value="/map3",method = RequestMethod.POST)
public String result4(@RequestParam(required=false, value="urlParam")String url, 
                      @ModelAttribute(value="markerList") MarkerList arrayParam

){
    //I want to find a object MarkerList populate with some Marker.
    return "redirect:/map13";
}

Test.jsp

    //some code html....


    <script>
    markerList = [];
    marker = {name:'test',url:'test',latitude:'test',longitude:'test',popupContent:'test'};
    markerList.push(marker);
    <!--How populate the JSTL "markerList" variable??????, i want if possible doing something like this. -->
    var index = 0;
    for(var mark in markerList){
        <c:set var="${marker.name}" scope="session" value="${mark.name.toString()}"/>
        <!-- Other parameter --> 
        <c:out  value="${marker.name}" />
        <!-- Other parameter --> 
        <!-- How can i add the new Marker with the value setted ???-->
    ${markerList}.add(${marker})    
    }
    </script>
    <!-- I want to use the new content of the markerList object with some operation -->
    <c:forEach items="${markerList}" var="idMarker">
    <input id="nameForm" name="nameParam" type="hidden" value="<c:out value="${idMarker.name}" />"/>
    </c:forEach>
    <c:url var="url" value="/map3" />
<form:form action="${url}" method="post" id="/map3" modelAttribute="markerList">
    <form:input type="hidden" name="markerList" value=${markerList}/>
    <input type="text" name="urlParam" value=""  title="urlParam"/>
    <input type="submit" name="urlFormParam" value="urlForm" />
</form:form>

<c:url var="url" value="/map3" />
<form:form action="${url}" method="post" id="/map3" modelAttribute="markerList">
<form:input type="hidden" name="markerList" value=${markerList}/>
<input type="text" name="urlParam" value=""  title="urlParam"/>
<input type="submit" name="urlFormParam" value="urlForm" />
</form:form>
    //some code html....

我如何 "send" 将 java 脚本对象 "markerLis" 传输到 Spring MVC 的控制器 ModelAttribute "MarkerList"?

注意: 我知道我可以 post 像 json 响应一样的 java 脚本对象并使用 "RequestBody" 和 Spring MVC 的 "ResponseBody" 注释用于接收 json 响应。

更新说明: 所以没有任何 ajax 电话(我知道我伤害了自己很多)。

我问这个问题只是出于好奇。

提前联系。

您可以拨打 ajax 电话。

var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
    if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
        var response = JSON.parse(xmlhttp.responseText);

        ...
        //process response code
        ...

    }
}
xmlhttp.open("GET", "URL of spring", true);
xmlhttp.send();

如果你使用jquery:

$.ajax({
    type: "GET",
    url: "URL from spring",
    success: function( response ){
        ...
        // Code to process the response
        ...
    }
}); 

更新

您可以动态生成表单并提交。或添加到您的 HTML

正文
<script>
var f = document.createElement("form");
f.setAttribute('method',"post");
f.setAttribute('action',"submit.php");

var i = document.createElement("input"); //input element, text
i.setAttribute('type',"text");
i.setAttribute('name',"username");

var s = document.createElement("input"); //input element, Submit button
s.setAttribute('type',"submit");
s.setAttribute('value',"Submit");

f.appendChild(i);
f.appendChild(s);

//and some more input elements here
//and dont forget to add a submit button

document.getElementsByTagName('body')[0].appendChild(f);

</script>