我想访问Javascript中的模型属性。我使用下面的代码:如何访问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的字符串表示相反,即[email protected]
。我可以用成功访问字段中的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方法(因为一些不得已的原因) 。所以我正在做一个正常的表单提交,并希望再次加载相同的表单,并尝试在Javascript中加载data
模型属性,以便我可以保留其余的代码。
我想知道它是否可以在Javascript中实现,因为它是可行的使用JQuery的文章?
编辑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文件或客户端访问该对象的位置? – Ralph 2012-02-20 13:37:25
在继续之前,停止并考虑:您的模型驻留在**服务器**上,JavaScript发生在**客户端**上。现在,你想完成什么? – pap 2012-02-20 14:35:06
@Ralph:不,我想删除Ajax部分。请检查我的编辑了解更多详情。 – xyz 2012-02-20 15:32:10