在AngularJS中访问Spring MVC模型对象

时间:2017-09-28 00:02:01

标签: angularjs spring jsp

我有一个使用JAVA Spring MVC(Backend)和AngularJS(前端),JSP(for view)和MySQL DB构建的Spring MVC Web表单。用户可以在填写完表格后提交表单并搜索现有条目。一旦提交了条目,也会向用户发送电子邮件。该条目也会保存在数据库中。在电子邮件正文中,我试图建立一个链接,将用户重定向到填充了与给定id对应的条目的表单。与单击搜索按钮时的方式相同..表单将填充现有表单字段..

目前我编写了一个控制器,它使用ModelAndView返回带有数据(searchData)的JSP页面..然而,它没有使用条目的详细信息填充表单。我怎样才能实现这个功能?

我为控制器编写了以下代码

@RequestMapping(value = "/searchById", method = RequestMethod.GET)
public ModelAndView populateEntrydata(@RequestParam(value = "id") String id) {
    String url= "http://localhost:8080/myform/searchById?id=" + id;
    ModelAndView model = new ModelAndView("index"); //jsp page
    ResponseEntity<Data> searchData = search(id);

    model.addObject("searchById", searchData);
    // String, String, object
    return model;
}  

如何访问angularJS控制器中的模型对象,以便用我从ModelAndView接收的内容填充jsp?

2 个答案:

答案 0 :(得分:3)

您在这里犯的错误是混合服务器端呈现(JSP)和客户端呈现(Angular)层。当您处理客户端表示技术(如Angular(反应或vue或任何另一个javascript框架))时,您的服务器端需要担心的是数据(通常是json / xml)而不是视图(html)。

解决方案

如果您决定使用Angular或任何其他SPA,那么请忘记JSP,创建一个spring boot rest webservice。

答案 1 :(得分:2)

我想建议一种稍微不同的方法。当用户点击电子邮件中的链接时,它会被重定向到表单。在这个过程中,不要获取数据。在控制器中编写一个方法,该方法将加载页面。在这种方法中,您将使用以下内容调用spring控制器中的方法:

index.html

url是在java控制器中调用方法的url(以及id作为url参数)。您将在数据变量中收到来自Java app的响应数据。从那里你可以用它来填充jsp页面。希望有所帮助。