掲示板

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

9年前 に Qu Ga によって更新されました。

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

Junior Member 投稿: 36 参加年月日: 15/02/19 最新の投稿
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 !
9年前 に Olivier Bonnet-Torrès によって更新されました。

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

Regular Member 投稿: 162 参加年月日: 08/07/11 最新の投稿
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...
9年前 に Qu Ga によって更新されました。

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

Junior Member 投稿: 36 参加年月日: 15/02/19 最新の投稿
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;
9年前 に Olivier Bonnet-Torrès によって更新されました。

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

Regular Member 投稿: 162 参加年月日: 08/07/11 最新の投稿
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()).
9年前 に Qu Ga によって更新されました。

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

Junior Member 投稿: 36 参加年月日: 15/02/19 最新の投稿
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 !