2009-12-03 8 views
0

Je suis en train de construire une application web avec un moteur d'application (Java) et GWT, bien que je pense que mon problème est plus général d'une question javascript générale.Y compris les informations en HTML pour Javascript à consommer?

Dans mon application, je souhaite inclure un menu latéral qui est généré à partir des données de ma base de données. Cela doit évidemment être fait dynamiquement à partir d'une servlet.

Actuellement, j'envoie un conteneur de menu vierge, puis j'effectue un appel ajax pour obtenir les informations dont j'ai besoin pour remplir le menu. Je préfère simplement envoyer les informations du menu dans la demande initiale, donc je n'ai pas besoin de perdre du temps à faire une deuxième demande. J'ai utilisé cette approche initiale parce qu'elle semblait plus simple: je viens d'écrire un service gpt rpc qui a saisi les données dont j'avais besoin.

Ma question est, puis-je demander à une bibliothèque javascript comme gwt de rechercher ses informations dans la page Web actuelle? Dois-je cacher cette information dans ma réponse HTML originale, peut-être dans un div caché ou quelque chose?

Répondre

0

Si les données que vous souhaitez intégrer est limitée aux éléments de menu, pourquoi génèrent pas directement HTML léger sur simples éléments <ol> et <li>? Vous pouvez toujours garder HTML hors de votre code Java en utilisant un moteur de template. Le balisage de menu pourrait simplement être stylisé avec CSS ou si vous avez besoin de quelque chose de plus fantaisiste que les simples éléments <ol> et <li>, vous pouvez masser le DOM avec JavaScript une fois la page chargée (lire: progressive enhancement). Si vous cherchez une solution plus générique, au-delà du menu, vous pouvez intégrer un bloc JSON dans votre page, qui sera consommé lorsque la page sera chargée pour la génération dynamique de votre menu. Vous pouvez également utiliser microformat that is suitable for menu data.

+0

merci pour l'aide tout le monde. J'aime l'approche json intégrée, et cela a été mentionné plusieurs fois.L'approche XML intégrée est très similaire. Je ne savais pas s'il était approprié d'intégrer xml ou json dans un document html. Je crois que gwt a des classes pour gérer l'analyse JSON. –

0

Vous pouvez inclure un bloc de script dans la réponse d'origine définissant les données, puis utiliser un événement onload (ou similaire) pour créer le menu basé sur ces données; C'est très similaire à ce que vous faites maintenant, mais sans le voyage supplémentaire au serveur. J'assume là que les données pour construire le menu sont transformées d'une certaine manière par JavaScript sur le client; sinon, il suffit d'inclure le balisage du menu directement.

0

GWT a quelque chose appelé JSNI (Javascript Native Interface) qui peut s'interfacer avec d'autres Javascript non-GWT. Ainsi, vous pourriez dans votre conteneur de page HTML avoir un contenant les éléments de menu générés en tant qu'objet Javascript. Ensuite, dans votre code GWT, vous avez un appel JSNI pour récupérer ces données et les placer au bon endroit dans votre interface utilisateur/DOM avec les méthodes GWT.

0

J'ai posé une question similaire il y a quelques semaines sur la façon de stocker des données en toute sécurité dans les balises HTML. Il contient également quelques liens vers d'autres questions. Here

0

Il y a en général 2 options:

  • stocker les données dans des balises xml quelque part dans le code html et plus tard obtenir les informations à partir de là, en traversant à travers le DOM. (vous pouvez les masquer avec css)
  • Stockez les données sous la forme JSON dans un script. (Il y a des décodeurs pour presque toutes les langues)

    var data = {"foo": "bar", "my_array": []};
Questions connexes