【发布时间】:2012-03-10 20:14:51
【问题描述】:
我想在 Javascript 中访问模型属性。我使用以下代码:
model.addAttribute("data", responseDTO);
我的 DTO 课程:
public class ResponseDTO {
private List<ObjectError> errors;
private Boolean actionPassed;
private String dataRequestName;
// and setter getter for all fields
}
我尝试使用以下方式访问 DTO:
var data = "${data}";
但它给了我一个 responseDTO 的字符串表示,即com.req.dto.ResponseDTO@115f4ea。我可以使用以下方法成功访问 DTO 中的字段:
var data = "${data.actionPassed}";
但这不适用于 DTO 内的 errors 属性,因为它是 ObjectError 的 List。如何在 Javascript 中获得完整的 responseDTO 对象?
谢谢!
编辑:
最初我使用的是jquery.post
$.post('ajax/test.html', function(data) {
// Here I was able to retrieve every attribute even list of ObjectError.
});
现在我想删除 Ajax 并将其转换为非 ajax 方法(由于一些不可避免的原因)。所以我正在做一个普通的表单提交并希望再次加载相同的表单并尝试在 Javascript 中加载 data 模型属性,以便我可以保持其余代码不变。
我想知道它是否可以在 Javascript 中实现,因为它可以使用 Jquery post 实现?
编辑 2:
我试过了(感谢@Grant 的建议)
JSONObject jsonObject =JSONObject.fromObject(responseDTO);
String jsonString = jsonObject.toString();
model.addAttribute("data",jsonString);
在 Javascript 中
var data = eval('('+ ${dataJson} +')'); // Getting error on this line
alert(data.actionPassed);
但出现错误且不显示警报
错误:
【问题讨论】:
-
在某个 AJAX 调用返回 DTO 后,您想在 JSP 文件中还是在客户端访问对象?
-
在继续之前,请停下来考虑一下:您的模型驻留在服务器上,而javascript发生在客户端上。现在,你想完成什么?
-
@Ralph:不,我想删除 Ajax 部分。请查看我的编辑以获取更多详细信息。
-
@pap:请检查我的编辑,让我知道是否有任何正确/更好的方法来实现这一点。
标签: java javascript spring attributes