我试图找到一种基于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
函数时没有任何反应。谁能发现我做错了什么?
答案 0 :(得分: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,请将以下罐子添加到/WEB-INF/lib
修改强>
<tr>
<td valign="top"><input type="text" value="${fSystemName}"></input></td>
</tr>
修改2
你不应该直接处理输出流,你应该让spring为你做。
理想情况下,您的方法应返回view name
,该弹簧将自动解析
请查看以下简单教程。这应该会让你朝着正确的方向前进