Dobry wieczór!
Buduje aplikację REST na serwerze Tomcat, mam jednak pewien problem z kontrolerem który odpowiada za obsługę wywołania strony i przekazanie informacji JSON.
@Controller
public class HomeController {
@Autowired
DatabaseRepository databaseRepository;
@RequestMapping( path = "/", produces = "text/html")
public String homeController(){
return "/templates/home.html";
}
@RequestMapping( path = "/", method = RequestMethod.GET, produces = "application/json", headers = "Accept=application/json")
public @ResponseBody List<Game> returnRandomGames(){
return databaseRepository.getRandomGames(9);
}
}
W założeniu kontroler ma obsługiwać stronę domową (przekazywać plik html) a także obsłużyć żądanie napisane w Angularze:
var app = angular.module('displayGames', ['ngRoute']);
app.service('getRandomGamesService', function() {
var randomGames;
this.getRandomGames = function($http){
return $http( {
headers: {
"X-Testing" : "testing"
},
method: 'GET',
url: '',
accept: "application/json"
}).then(function successCallback(response) {
randomGames = response.data;
return randomGames;
}, function errorCallback(response) {
window.alert("Fail!");
});
};
});
app.controller('randomGames', function($scope, $http, getRandomGamesService ){
$scope.submit = function(){
getRandomGamesService.getRandomGames($http).then( function(randomGames) {
window.alert(randomGames);
$scope.games = randomGames;
});
};
});
Żądanie te pobiera listę produktów w JSON po czym je wypisuje na stronie domowej.
**Problem polega na tym, że żądanie nie zawsze działa. Gdy odświeżę stronę (zazwyczaj) żądanie pobiera stronę html zamiast pliku JSON przez co wychodzą bzdury. ** Co ciekawe, gdy włączę Chrome Dev Tools to żądanie *zawsze *działa poprawnie i nie jestem w stanie zobaczyć co jest nie tak. Zgaduje że problem leży po stronie kontrolera więc piszę to w dziale javy.
- Ktoś ma może jakiś pomysł co jest źle?
- Czy taka "architektura" kontrolera, jest dobra, tzn. by dla jednej ścieżki generował różne zasoby (tutaj html lub JSON)?
EDIT: Dobra, jednak Chrome DT nie mają nic do rzeczy bo dla nich też czasami nie działa. W sumie nie jestem w stanie powiedzieć od czego zależy że te requesty działają lub nie. **Obecnie działa to w taki sposób, że pierwszy request po odświeżeniu strony nigdy nie działa, a kolejne zazwyczaj już tak. ** Wydaje mi się że błąd jest głupi ale nie potrafię go znaleźć.
EDIT2: Wstawiłbym info o requeście ale znowu wszystko działa gdy mam włączony CDT :/. Tylko po wyłączeniu go dzieje się sytuacja opisana powyżej - pierwszy request nie działa, kolejne już tak.
Shalom