0

我试图找到一种基于 Java 的结果在 JSP 页面中填充“表单”的方法。

所以这是我的 Javascript 代码:

$('#uSystemList').change(function() {
    $.get("/live-application/systemById", {systemid: $("#uSystemList").val()}, displayChangedSystemResults, "html");
});

function displayChangedSystemResults(html){
    $('#systemForm').empty();
    $('#systemForm').append(html);
}

表格:

<form:form id="systemForm" method="post" action="/live-application/systemSave" commandName="systemForm">
<tr>
    <td valign="top"><form:select path="uSystemList" id="uSystemList"> </form:select> </td>
</tr>
<tr>
    <td valign="top"><form:input path="fSystemName"/></td>
</tr>
</form:form>

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 = new String();
        if (!systemid.equals("")) {
            System system = service.getSystemById(systemid));

            html = html + "<input type='text' value='" + system.getName() + "' id='fSystemName' />";
        } 
        refreshHtml.append(hostHtml);
        outputStream.write(refreshHtml.toString().getBytes());
        outputStream.flush();
    } catch (Exception e) {
        outputStream.flush();
    }
}

作为测试,我只想填充fSystemName表单的字段,但是当它返回displayChangedSystemResults函数时没有任何反应。谁能发现我做错了什么?

4

1 回答 1

0

更简单的实现方法是设置要显示请求属性的值并在 JSP 中访问它。

在服务器端

调整方法签名以包含 Spring 模型

public void getSystemById(@RequestParam("systemid") String systemid, Model model , OutputStream outputStream) throws IOException {

在请求处理方法中你可以做

System system = service.getSystemById(systemid));
model.addAttribute("fSystemName", system.getName());

然后使用 JST lib 在 JSP 中显示

为了使用 JSTL,请将以下 jar 添加到您的/WEB-INF/lib

编辑


    <tr>
 <td valign="top"><input type="text" value="${fSystemName}"></input></td>
    </tr>

编辑 2

你不应该直接处理输出流,你应该让 spring 为你做。理想情况下,您的方法应该返回 a view name,spring 会自动解决

检查下面的简单教程。这应该使您朝着正确的方向前进

Spring 3 MVC Hellow 世界

于 2013-03-06T12:36:06.213 回答