• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

backbone - route greift nicht für Webservice

Joller

New member
Hallo,

verwende folgenden Router für die Navigation. Für die Route "home" via http://localhost:8080/cfm funktioniert alles (da hängt kein Webservice hinter). Für die Route "categories" via http://localhost:8080/cfm/rest/cat/all stellt er nur die JSON-Response des Webservice dar, er loggt jedoch gar nichts in der Konsole. Somit greift die Route nicht und auch kein anderer Teil der Skripte wird ausgeführt.

Was mache ich falsch?

Einbinden des loaders in index.html
HTML:
<script data-main="resources/js/app/loader" src="resources/js/libs/require.js"></script>

loader.js - started den Router
Code:
console.log("loader is executing");
requirejs.config({
	baseUrl : "resources/js",
	paths : {
		jquery : 'libs/jquery-1.9.1',
		underscore : 'libs/underscore',
		bootstrap : 'libs/bootstrap',
		backbone : 'libs/backbone',
		text : 'libs/text',
		router : 'app/router'
	},
	shim : {
		'backbone' : {
			deps : [ 'jquery', 'underscore' ],
			exports : 'Backbone'
		},

		'underscore' : {
			exports : '_'
		}
	}
});
define(
		"initializer",
		[ "jquery" ],
		function($) {
			console.log("initializer is executed");
			$('head')
					.append(
							'<link rel="stylesheet" href="resources/css/bootstrap.css" type="text/css" media="all"/>');
		});

require([ 'initializer', 'router' ]);

router.js
Code:
define("router", [ 'jquery', 'underscore', 'backbone', 'app/views/category' ],
		function($, _, Backbone, CategoryView) {

			$(document).ready(new function() {
				console.log("ready");
			});

			var Router = Backbone.Router.extend({
				initialize : function() {
					Backbone.history.start();
				},
				routes : {
					'' : 'home',
					'all' : 'categories'
				},
				home : function() {
					console.log("navigating to home");
				},
				categories : function() {
					var categoryView = new CategoryView();
					categoryView.render();
					console.log("categories called");
				}
			});

			var router = new Router();

			return router;
		});

Der CategoryView
Code:
define([ 'jquery', 'underscore', 'backbone' ], function($, _, Backbone) {

	var CategoryView = Backbone.View.extend({
		el : '.page',
		render : function() {
			var that = this;
			that.$el.html('Der Inhalt von CategoryView');
		},
	});

	return CategoryView;
});
 
Der Server nimmt den Aufruf /rest/cat/all entgegen. Der Teil /rest wird dabei in der Klasse JaxRsActivator (https://access.redhat.com/site/docu...ile_Web_Project/JaxRsActivator.java_File.html) vorgegeben.

Code:
@Path("/cat")
public class CategoryEndpoint {
	
	@Inject
	private CategoryDao categoryDao;

	@GET
	@Path("/all")
	@Produces("application/json")
	public Response getAllCategories() {
		List<Category> cats = categoryDao.findAll();
		if (cats == null || cats.size() == 0) {
			return Response.status(Status.NOT_FOUND).build();
		}
		return Response.ok(cats).build();
	}

Ich dachte auch erst, dass das etwas mit den Pfaden zu tun hatte. Das hatte ich aber tatsächlich gelöst. Das komische nun ist, dass die Antwort vom Server von den Javascripts überhaupt nicht mehr beachtet wird. Sie wird statt dessen direkt auf der Seite angezeigt.
 
Zurück
Oben