Foren

Afficher résultat d'un while dans un JSP ?

Qu Ga, geändert vor 9 Jahren.

Afficher résultat d'un while dans un JSP ?

Junior Member Beiträge: 36 Beitrittsdatum: 19.02.15 Neueste Beiträge
Bonjour,

J'aimerai récupérer dans un JSP de mon portlet le résultat du println dans la fin de mon code qui suit (et qui s'affiche dans ma console du coup), comment pourrai-je y parvenir?

final Hashtable<String, String> lEnvironment = new Hashtable<String, String>();
lEnvironment.put(Context.INITIAL_CONTEXT_FACTORY, contexte);
lEnvironment.put(Context.PROVIDER_URL, url);
lEnvironment.put(Context.SECURITY_PRINCIPAL, principal);
lEnvironment.put(Context.SECURITY_CREDENTIALS, password);

final LdapContext lLdapContext = new InitialLdapContext(lEnvironment, new Control[0]);
final SearchControls lSearchControls = new SearchControls();
lSearchControls.setSearchScope(SearchControls.SUBTREE_SCOPE);
System.out.println("*** Connexion établie *** \n");

final NamingEnumeration<SearchResult> lResultats = lLdapContext.search(
"ou=system", "(objectclass=inetorgPerson)", lSearchControls);

System.out.println("Résultat trouvé : ");
while (lResultats.hasMore()) {
System.out.println("\t " + lResultats.next().getName());

}



Merci d'avance !
Olivier Bonnet-Torrès, geändert vor 9 Jahren.

RE: Afficher résultat d'un while dans un JSP ?

Regular Member Beiträge: 162 Beitrittsdatum: 11.07.08 Neueste Beiträge
Bonsoir,

2 cas de figure:
A. le code mentionné est déjà dans la JSP (pratique [très] douteuse).
Le code devient (plusieurs variantes possibles, par exemple avec <c:forEach>) :

&lt;%
final Hashtable<string, string> lEnvironment = new Hashtable<string, string>();
lEnvironment.put(Context.INITIAL_CONTEXT_FACTORY, contexte);
lEnvironment.put(Context.PROVIDER_URL, url);
lEnvironment.put(Context.SECURITY_PRINCIPAL, principal);
lEnvironment.put(Context.SECURITY_CREDENTIALS, password);

final LdapContext lLdapContext = new InitialLdapContext(lEnvironment, new Control[0]);
final SearchControls lSearchControls = new SearchControls();
lSearchControls.setSearchScope(SearchControls.SUBTREE_SCOPE);
%&gt;
<liferay-ui:message key="connection-established" />
&lt;%
final NamingEnumeration<searchresult> lResultats = lLdapContext.search(
"ou=system", "(objectclass=inetorgPerson)", lSearchControls);
%&gt;
<liferay-ui:message key="result-found" />
&lt;%
while (lResultats.hasMore()) {
%&gt;
&lt;%= lResultats.next().getName() %&gt;
&lt;%
}
%&gt;
</searchresult></string,></string,>


B. le code est dans en fait dans le contrôleur (aka MyPortlet).
Le code devient (là encore plusieurs variantes possibles):
MyPortlet.java

...
final Hashtable<string, string> lEnvironment = new Hashtable<string, string>();
lEnvironment.put(Context.INITIAL_CONTEXT_FACTORY, contexte);
lEnvironment.put(Context.PROVIDER_URL, url);
lEnvironment.put(Context.SECURITY_PRINCIPAL, principal);
lEnvironment.put(Context.SECURITY_CREDENTIALS, password);

final LdapContext lLdapContext = new InitialLdapContext(lEnvironment, new Control[0]);
final SearchControls lSearchControls = new SearchControls();
lSearchControls.setSearchScope(SearchControls.SUBTREE_SCOPE);
StringBuilder sb = new StringBuilder();
sb.append(LanguageUtil.get("connection-established"));

final NamingEnumeration<searchresult> lResultats = lLdapContext.search(
"ou=system", "(objectclass=inetorgPerson)", lSearchControls);

sb.append(LanguageUtil.get("result-found"));
while (lResultats.hasMore()) {
      sb.append("\t " + lResultats.next().getName());
}

response.setAttribute("searchOutcome", sb.toString());
...
</searchresult></string,></string,>

view.jsp

...
&lt;%
String results = response.getAttribute("searchOutcome");
%&gt;
<c:if test="<%= Validator.isNotNull(results) %>">
&lt;%= results %&gt;
</c:if>
...


Bbis. Variante SpringMVC portlet
Le code pourrait ressembler à:
MyPortlet.java

...
final Hashtable<string, string> lEnvironment = new Hashtable<string, string>();
lEnvironment.put(Context.INITIAL_CONTEXT_FACTORY, contexte);
lEnvironment.put(Context.PROVIDER_URL, url);
lEnvironment.put(Context.SECURITY_PRINCIPAL, principal);
lEnvironment.put(Context.SECURITY_CREDENTIALS, password);

final LdapContext lLdapContext = new InitialLdapContext(lEnvironment, new Control[0]);
final SearchControls lSearchControls = new SearchControls();
lSearchControls.setSearchScope(SearchControls.SUBTREE_SCOPE);
StringBuilder sb = new StringBuilder();
sb.append(LanguageUtil.get("connection-established"));

final NamingEnumeration<searchresult> lResultats = lLdapContext.search(
"ou=system", "(objectclass=inetorgPerson)", lSearchControls);

sb.append(LanguageUtil.get("result-found"));
while (lResultats.hasMore()) {
      sb.append("\t " + lResultats.next().getName());
}

model.put("searchOutcome", sb.toString());

return new ModelAndView("result", model);
...
</searchresult></string,></string,>

view.jsp

...
<c:if test="${!empty result}">
${result}
</c:if>
...


En espérant avoir répondu à la question...
Qu Ga, geändert vor 9 Jahren.

RE: Afficher résultat d'un while dans un JSP ?

Junior Member Beiträge: 36 Beitrittsdatum: 19.02.15 Neueste Beiträge
Bonjour,

merci de votre réponse mais hélas je n'y parvient pas. Le problème est que mes variables sont dans ConfigurationActionImpl.java après avoir rempli un formulaire Configuration.jsp (dans le tab de configuration).

Ce que je cherche c'est de pouvoir réutiliser ses variables par la suite dans une jsp nommée MesApplication_view.jsp correspondant à ma vue.

Cordialement.

Edit : J'ai finalement réussi, en ajoutant ce bout de code dans la page souhaitée :

&lt;% PortletPreferences preferences = renderRequest.getPreferences();
    
    String portletResource = ParamUtil.getString(request, "portletResource");
    
    if (Validator.isNotNull(portletResource)) {
        preferences = PortletPreferencesFactoryUtil.getPortletSetup(request, portletResource);
    }
    String url = preferences.getValue("url","");
    String contexte = preferences.getValue("contexte","");
    String principal = preferences.getValue("principal","");
    String password = preferences.getValue("password","");
    
   %&gt;
Olivier Bonnet-Torrès, geändert vor 9 Jahren.

RE: Afficher résultat d'un while dans un JSP ?

Regular Member Beiträge: 162 Beitrittsdatum: 11.07.08 Neueste Beiträge
Bonjour,
Il manquait effectivement dans votre question l'information qu'il s'agissait d'une configuration (et qu'il fallait la persister via le mécanisme des préférences).
Les éléments de configuration peuvent donc aussi être sauvegardés dans les préférences.
L'utilisation des préférences peut se faire en injectant le code directement sous forme de scriptlet dans la JSP, ou en injectant la valeur depuis le contrôleur, suivant le même principe que sur la réponse initiale (en remplaçant response.getParameter() par preference.getValue()).
Qu Ga, geändert vor 9 Jahren.

RE: Afficher résultat d'un while dans un JSP ?

Junior Member Beiträge: 36 Beitrittsdatum: 19.02.15 Neueste Beiträge
Merci pour ces réponses ! Je suis un petit nouveau sur Liferay alors je savais pas trop quels pouvaient être les éléments importants à déclarer !