无法将对象从控制器获取到 JSP
Unable to get object from Controller to JSP
我正在尝试将一个对象从 Spring Controller 传递到我的 JSP 页面,并计划使用 JSTL 在 JSP 中迭代该对象。但是我无法在JSP中打印该对象。从控制器端,成功发送值。我认为Javascript或JSP有问题。
请求您的宝贵意见。请在下面找到代码,
控制器:
@RequestMapping("/changehistory/getSearchHistory.htm")
public ModelAndView getSearchHistory(@ModelAttribute(HISTORY_CRITERIA) HistoryCriteria historyCriteria,ModelMap model) {
ModelAndView mav = new ModelAndView("changehistory/changeHistory_new");
List<HistoryCriteriaResult> result=new ArrayList<HistoryCriteriaResult>();
result=changeHistoryService.getHistory(historyCriteria);
mav.addObject("historyCriteriaResult", result);
return mav;
}
.JSP:
<div class="ItemListNavBoxLeft" style="margin-top: -2px; padding-left: 20px;"
id="accordianRefreshBtn">
<div class="OrangeFB" style="width: auto; " onclick="RP.getSearchHistory()">
<div class="Q2"><div class="Q8"><div class="Q4"><div class="Q6"><div class="Q1"><div
class="Q3"><div class="Q7"><div class="Q9"><div class="Q5">
<spring:message code='label.button.history'/>
</div></div></div></div></div></div></div></div></div>
</div>
</div>
<div id="changeHistorydiv" style="display:<c:choose><c:when
test='${fn:length(historyCriteriaResult) > }'>block</c:when>
<c:otherwise>none</c:otherwise></c:choose>;">
<ul class="FormBody" style="padding-left:150px;">
<li class="FormFieldTitle"></li>
id="RP.changeHist"
name="changeHist">
<c:forEach items="${historyCriteriaResult}"
var="HCList">
${HCList.code}
${HCList.name}
</c:forEach>
</ul>
</div>
.JS:
RP.getSearchHistory = function() {
dojo.xhrPost({
url : "/RMT/rateplan/getSearchHistory.htm?",
timeout : 100000,
load : function(content) {
var iList = content['result'], i;
HCList.options.length = 0;
for (i = 0; i < iList.length; i++) {
HCList.options[HCList.options.length] = new Option(iList[i].name, iList[i].code);
}
},
error : function(error) {
rmt.ErrorMessage.show(error);
}
});
}
你不能在 JavaScript 代码中访问 Java 变量HCList
,你有两个选择:
首先,您可以在另一个 JSP 页面中返回结果,在这种情况下,您不需要执行 Ajax 调用getSearchHistory
您可以通过在控制器类中定义另一个控制器方法来执行此操作,在此处查看表单提交示例,检查控制器类如何使用两个方法实现,每个方法对应于一个唯一的 JSP 文件
其次,如果你想在 AJAX 请求中返回historyCriteriaResult
,那么你必须将其转换为 JSON 格式,所以你需要将你的 Java 方法更改为如下所示:
@RequestMapping("/changehistory/getSearchHistory.htm")
public @ResponseBody List<HistoryCriteriaResult> getSearchHistory(@ModelAttribute(HISTORY_CRITERIA) HistoryCriteria historyCriteria) {
List<HistoryCriteriaResult> result=new ArrayList<HistoryCriteriaResult>();
result=changeHistoryService.getHistory(historyCriteria);
return result;
}
在你的JavaScript方法中,你可以像这样解析JSON响应:
handleAs: "json", // This force the response to be treated as JSON
load : function(content) {
alert(content.HistoryCriteriaResultList[0].code);
alert(content.HistoryCriteriaResultList[0].name);
.
.
// or append it to any div you want
}
注意:如果您使用的是 Spring 3 或更高版本,则需要将 Jackson JSON 解析器添加到项目类路径中
相关文章:
- 在JSP中获取嵌套形式的select列表值
- 在 jsp 中获取屏幕宽度作为变量
- JSP--如何获取请求参数
- 将 Java 变量从 JSP 获取到脚本标记中
- 在数据库(JSP PAGE)中获取多个复选框结果
- 如何从catalina.properties获取值到jsp
- 如何获取jsp上单选按钮的值
- 需要帮助获取javascript中包含的jsp页面的名称
- <JSP>正在获取复选框的值
- 如何在jsp中的javascript函数中从servlet获取json返回
- 在jsp页面中获取javascript数组变量
- 如何在 JSP 页面中获取 JavaScript 会话属性
- 使用PHP和JSP在另一个网页中获取cookie值
- 正在获取父<tr>在struts2 jsp页面中使用jquery的表的索引值
- 如何动态获取JSP参数?(或创建JSP参数)
- 在包含的 JSP 页面中获取 JSP 变量
- 我获取 jsp 中的值作为不同的值而不是我输入的值
- 在javascript文件中获取jsp值
- 我正在尝试使用javascript获取jsp中文本框的值.但是我无法获取.请给我一些如何获取的建议
- 从Javascript获取JSP列表项