2016-07-20 9 views
0

Wie kann eine Javascript-Variable auf einem Server (via Properties-Datei) in eine Angular js/JavaScript App injiziert werden?So injizieren Server-Variable auf eine Client-Seite js/html-Datei

Es gibt eine Java-Jersey-Anwendung, die Client-Dateien (js, HTML, CSS usw.) im Ordner/src/main/webapp hat und es gibt eine Javascript-Variable, die ich einstellen möchte, bevor sie geliefert wird der Kunde. Zum Beispiel, beachten Sie bitte die folgenden:

<script type="text/javascript"> 
     var serverHost = "<%serverHost%>"; 
    </script> 

Wie kann ich den Wert von „<% Serverhost%>“ String mit einem Wert meiner Wahl zu ersetzen, die zur Laufzeit ausgewertet werden? Vorzugsweise über Eigenschaften.

Das Ziel davon ist, dass der Client Ruheaufrufe hat und die URL nicht relativ sein kann und muss voll sein, da die Anwendung über einen anderen/Middle-Man-Server zugegriffen wird, so dass letztlich die restlichen Anrufe erreichen müssen Host-Server. Der Wert wird über eine Eigenschaftendatei benötigt, sodass die Anwendung/derselbe Build in verschiedenen Umgebungen funktionieren kann.

Würde mich über irgendwelche Ideen freuen.

Danke

Antwort

0

Das Problem, das Sie versuchen, Bedürfnisse Server-Seite Rendering zu lösen. In Ihrem Fall z. B. Sie können die Host-URL aus der Eigenschaftendatei auf der Serverseite abrufen, sie über den Controller an die Ansicht übergeben und in der Ansicht mithilfe von JSP-Tags einen HTML-Code generieren, für den die Variable serverHost verwendet wird dynamisch

JEDOCH gesetzt ....

Wie Sie AngularJS verwenden, diese Art der Wiedergabe ist eindeutig gegen Angular Philosophie.

Sie können eine Konstante in Winkel erstellen, angular.module('myApp').constant('SERVER_URL', 'http://localhost:8000/'); Sie können den Wert dieser Konstante während des Builds festlegen.

ODER

Sie können eine einfache API erstellen, in dem Sie den Host-URL-Wert abrufen werden aus der Eigenschaftendatei, vorzugsweise im JSON-Format, können Sie einfach diese API aufrufen diesen konstanten Wert einzustellen.