通过Java从Javascript更改中填充多个HTML语句

时间:2013-03-06 09:55:03

标签: java html ajax jsp

我试图在我的网页中发生更改时填充两个单独的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似乎只让我在每次更改时填充一个对象。

2 个答案:

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