2010-02-08 5 views
2

J'essaie de modifier un portlet pour charger des données pour une table sur AJAX car les appels WS prennent un temps ridicule à terminer. La table est essentiellement une vue d'ensemble avec une entrée par ligne de table et un lien dans chaque ligne vers des informations plus détaillées sur l'entrée.Génération d'URL de portlet à partir du servlet AJAX

Voici comment je suis actuellement en train de créer les URL pour chaque ligne de la table:

<portlet:renderURL portletMode="VIEW" windowState="maximized" var="showURL"> 
    <portlet:param name="id" value="${entry.ID}"/> 
</portlet:renderURL> 

J'ai créé un servlet AJAX pour recevoir les appels AJAX et retour JSON qui sera ajouté à la table en utilisant dynamiquement Rappels jQuery. Le servlet fonctionne bien et les lignes sont ajoutées à la table sans problèmes réels. Le problème que j'ai est actuellement avec les liens qui devraient être dans le tableau.

Ma question est comment puis-je imiter le code JSP ci-dessus dans la servlet pour générer les bonnes URL de portlet?!?! Je suis un peu nouveau pour les portlets et leurs URLs semblent être un désordre sérialisé de charabia pour moi.

+0

Pouvez-vous partager cette façon d'utiliser Ajax avec spring 2.5 MVC? J'essaie de le faire. J'ai fait la classe 'AjaxViewResolver' et' AjaxView' selon le lien http://www.jtraining.com/blogs/ajax-with-spring-mvc-and-jquery.html, en retournant 'JSONObject.toString()' depuis le voir la classe 'méthode renderMergedOutputModel' avec le type de contenu 'text/javascript; jeu de caractères = UTF-8'. Je récupère tout le contenu HTML dans la fonction de rappel jQuery. pouvez-vous s'il vous plaît aider? – Parth

Répondre

1

Jetez un oeil à this JSP page pour un exemple de la façon dont cela est fait - une bonne méthode, de toute façon. Regardez la définition de editPortletUrl vers le haut de la page, puis regardez comment elle est utilisée plus tard.

Un jeton PORTLETID est incorporé dans l'URL, qui est ensuite remplacé par une valeur réelle par JS.

Ce portlet utilise Fluid Infusion, que je recommande fortement pour les widgets puissants, accessibles et d'ordre supérieur basés sur jQuery.

Brian dit

Merci pour l'idée. J'ai essayé de faire ce que vous aviez mais je ne vois pas comment le JS sera en mesure de sous le vrai ID pour l'espace réservé. En utilisant renderURL je reçois ce dans le JS:

var baseShowUrl = "/wps/myportal/portalname/!ut/p/c5/hY7NCoJAFEafpSe4X_Pf0hJ0Sied6M9NCEVIWS2ioqdvwo2b6H7LczhcqijsUj-aY31vrpf6TFuq9C52yJ32DAZCworYz_V0DIDRqq1fTdu8D_tOFUra0oqgZoKD-VLabBpzQPXVDVWqV9UjE6qFzGcmD1XQ-vtHz0jSQgVjmXnr5xxm2HH8uAgdnyRRKnQGJJpJMCcXLI9WSLj6wwW59Noe6NYafjr59BkNBh8sH-CA/dl3/d3/L0lDU0NsQ1FvS1VRIS9JSFNBQ0l3a1FBd3FibTZtLzRDMWI5WUF4RW1TUVVnZyEvN19ETjBNTjdSMjA4MDQ1MEk0RFJPN0pCMDAwMi92aWV3L0NPTlRSQUNUSUQ!/"; 

MISE À JOUR de Drew Wills

Pouvez-vous me montrer comment votre ou tag?

+0

Merci pour l'idée. J'ai essayé de faire ce que vous aviez mais je ne vois pas comment le JS sera en mesure de sous le vrai ID pour l'espace réservé. En utilisant renderURL je reçois ce dans le JS: var baseShowUrl = "/ wps/myportal/PortalName/ut/p/c5/hY7NCoJAFEafpSe4X_Pf0hJ0Sied6M9NCEVIWS2ioqdvwo2b6H7LczhcqijsUj-aY31vrpf6TFuq9C52yJ32DAZCworYz_V0DIDRqq1fTdu8D_tOFUra0oqgZoKD-VLabBpzQPXVDVWqV9UjE6qFzGcmD1XQ-vtHz0jSQgVjmXnr5xxm2HH8uAgdnyRRKnQGJJpJMCcXLI9WSLj6wwW59Noe6NYafjr59BkNBh8sH-CA/DL3/d3/L0lDU0NsQ1FvS1VRIS9JSFNBQ0l3a1FBd3FibTZtLzRDMWI5WUF4RW1TUVVnZyEvN19ETjBNTjdSMjA4MDQ1MEk0RFJPN0pCMDAwMi92aWV3L0NPTlRSQUNUSUQ /!"; –

+0

La balise est identique à la dans la question d'origine mais avec la valeur remplacée par "ENTRYID". Il semble que je puisse complètement ignorer le paramètre et simplement coller sur une chaîne de requête comme? Id = foo dans le javascript et tout fonctionne. –

+0

Je suis content que vous ayez trouvé une solution, mais ça pue que ni votre solution ni la mienne ne soit conforme aux normes.Un protlet écrit avec mon approche qui fonctionne sur mon portail (uPortal) ne fonctionnerait pas sur le vôtre et vice versa. –

Questions connexes