Wednesday, July 8, 2015

Rest & Angular - Spring MVC4

To implement Rest & Angular client in MVC4, you need to :

1- Create the rest controller 

@RestController
public class ReleasesReportController {

    @RequestMapping("/releases")
    public List<Release> getReleases(){
        List<Release> releases=new ArrayList<Release>();
       
        Release release1 =new Release();
        release1.setName("Strong bad");
       
        Release release2 =new Release();
        release2.setName("Back to the feature");
       
        Release release3 =new Release();
        release3.setName("Trogdor");
       
        releases.add(release1);
        releases.add(release2);
        releases.add(release3);
       
        return releases;
       
    }
}

2- Add JSON mapping to the WebAppInitializer class 

    @Override
    public void onStartup(ServletContext servletContext) throws ServletException {
        WebApplicationContext context = getContext();
        servletContext.addListener(new ContextLoaderListener(context));
        ServletRegistration.Dynamic dispatcher = servletContext.addServlet("DispatcherServlet", new DispatcherServlet(context));
        dispatcher.setLoadOnStartup(1);
        dispatcher.addMapping("*.html");
        dispatcher.addMapping("*.pdf");
        dispatcher.addMapping("*.json");

    }


3- Bind it to the front end 


<html ng-app>

<head>
<title> Hello Releases Tracker</title>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.8/angular.min.js" > </script>
<script type="text/javascript" src="releases.js"></script>
</head>

<body>
    <div ng-controller="Releases">
        I have {{releases.length}} releases !
       
        <ul class="releases-container">
            <li ng-repeat="release in releases">
            {{release.name}}
             </li>
       
        </ul>
    </div>

</body>

</html>


4- Create the angular file (releases.js) under src/main/webapp folder

function Releases($scope, $http){
  
    $http.get('http://localhost:8080/ReleaseTracker/releases.json').
        success(function(data){
        $scope.releases=data;
    });
  
}

No comments:

Post a Comment