Javascript 无法将对象从控制器获取到JSP
我试图将一个对象从Spring控制器传递到我的JSP页面,并计划使用JSTL在JSP中迭代该对象。但是我无法在JSP中打印对象。从控制器端,成功发送值。我认为Javascript或JSP中有问题 请求你的宝贵意见。请找到下面的代码 控制器:Javascript 无法将对象从控制器获取到JSP,javascript,jsp,spring-mvc,dojo,Javascript,Jsp,Spring Mvc,Dojo,我试图将一个对象从Spring控制器传递到我的JSP页面,并计划使用JSTL在JSP中迭代该对象。但是我无法在JSP中打印对象。从控制器端,成功发送值。我认为Javascript或JSP中有问题 请求你的宝贵意见。请找到下面的代码 控制器: @RequestMapping("/changehistory/getSearchHistory.htm") public ModelAndView getSearchHistory(@ModelAttribute(HISTORY_CRITERIA) His
@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;
}
@RequestMapping(“/changehistory/getSearchHistory.htm”)
公共模型和查看getSearchHistory(@ModelAttribute(HISTORY_CRITERIA)HistoryCriteria HistoryCriteria,ModelMap模型){
ModelAndView mav=新的ModelAndView(“更改历史记录/更改历史记录_新”);
列表结果=新建ArrayList();
结果=changeHistoryService.getHistory(historyCriteria);
mav.addObject(“historyCriteriaResult”,结果);
返回mav;
}
JSP:
id=“RP.changeHist”
name=“changeHist”>
${HCList.code}
${HCList.name}
JS:
RP.getSearchHistory=function(){
dojo.xhrPost({
url:“/RMT/rateplan/getSearchHistory.htm?”,
超时:100000,
加载:函数(内容){
var iList=内容['result'],i;
HCList.options.length=0;
对于(i=0;i
您无法访问JavaScript代码中的Java变量HCList
,您有两个选项:
首先,您可以在另一个JSP页面中返回结果,在这种情况下,您不需要执行getSearchHistory
Ajax调用,您可以通过在控制器类中定义另一个控制器方法来执行此操作,检查表单提交示例,检查控制器类是如何使用两个方法实现的,每个方法对应一个唯一的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;
}
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或更高版本,则需要向项目类路径添加JSON解析器是否包含在jsp中?是的,我已经包含了它。我使用了第一个选项并修改了控制器,以便在另一个jsp页面中查看返回结果,如下所示。public ModelAndView getSearchHistory(@ModelAttribute(HISTORY_CRITERIA)HistoryCriteria HistoryCriteria,ModelMap model){ModelAndView mav=new ModelAndView(“changehistory/changeHistoryResults”);List result=new ArrayList();result=changeHistoryService.getHistory(HistoryCriteria);mav.addObject(“historyCriteriaResult”,结果);返回mav;}我试着像下面那样放入新的JSP,但它不起作用。我遗漏了什么吗?我不是说一个新的JSP将
forEach
循环移动到另一个JSP文件中,并将其包含在原始JSP文件中,我的意思是定义一个返回的新JSP处理检索历史准则的请求
,请检查答案,我已经更新了
@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;
}
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
}