我试图在我的网页中发生更改时填充两个单独的HTML对象 - 一个是下拉列表,另一个是表单。
所以在我的JSP代码中我有这个:
$('#uSystemList').change(function() {
$.get("/live-application/systemById", {systemid: $("#uSystemList").val()}, displayChangedSystemResults, "html");
});
<script type="text/javascript">
function displayChangedSystemResults(html){
$('#uList').empty();
$('#uList').append(html);
}
</script>
在Java方面我有这个:
@RequestMapping(value = "/systemById", method = RequestMethod.GET)
public void getSystemById(@RequestParam("systemid") String systemid, OutputStream outputStream) throws IOException {
StringBuilder refreshHtml = new StringBuilder();
try {
String html = "";
System system = service.getSystemById(systemid));
for (Value value: inewsSystem.getValues()) {
html = html + "<option value='" + value.getId() + "'> " + value.getName() + "</>";
}
}
refreshHtml.append(html );
outputStream.write(refreshHtml.toString().getBytes());
outputStream.flush();
} catch (Exception e) {
outputStream.flush();
}
}
这样就可以填充我的uList
下拉列表 - 但是如何告诉它填充其他内容(例如表单,但可能是其他任何例子......)。 OutputStream
似乎只让我在每次更改时填充一个对象。
答案 0 :(得分:1)
在您的情况下,发送两个ajax请求并使用两个弹簧控制器来处理每个请求并不是一个坏主意。然后,在JSP页面中,您需要两个javascript回调来填充不同的HTML部分。
或者,如果你坚持只做一个AJAX请求;解决方法是让spring控制器返回一个JSON,其中包含用于填充这两个HTML部分的数据。但是使用这种方法显然需要更多的javascript工作。
答案 1 :(得分:0)
这是Javascript而不是JSP :)。您需要更新:
<script type="text/javascript">
function displayChangedSystemResults(html){
$('#uList').empty();
$('#uList').append(html);
$('#someOtherElement').empty();
$('#someOtherElement').append(html);
}
</script>