java et JSP

Nikko
java et JSP

bonjour à vous,

je réalise une web app avec une servlet et des pages JSP. Je rencontre un problème dans l'écriture d'une de ces pages JSP.

J'ai, dans mon programme java, une session utilisateur. J'essaye de l'appeler dans ma page JSP pour mettre une valeur par défaut dans une zone de texte, mais je n'y arrive pas. Voici mon code :

<p align="center"> <font face="Broadway" size ="2">Nom de la personne réservant :</font></p>

<%HttpServletRequest req; %>
<%HttpSession Session = req.getSession();%>
<%String s = (String)Session.getAttribute("login");%>
<%s=s.substring(0, s.lastIndexOf("-"));%>

<p align="center"> <font face="Broadway"><input type="text"value=<%=s %>name="salarie" size="20"></font></p>
<br>

Si quelqu'un aurait une idée, je suis preneur !

Merci par avance !

Nikko

J'ai contourné mon problème. Voici donc mon nouveau code de ma JSP:

<%!private ADO ado = new ADO(); %>

<p align="center"> <font face="Broadway"><input type="text" value=<%=ado.decoupLogin(request, response) %> name="salarie" size="20"></font></p>

Et voici le code de ma fonction de mon programme java :

public String decoupLogin(HttpServletRequest req, HttpServletResponse rep){
		HttpSession Session = req.getSession();
		String s = (String)Session.getAttribute("login");
		s = s.substring(0, s.lastIndexOf("."));
		s += " ";
		String x = (String)Session.getAttribute("login");
		x = x.substring(x.lastIndexOf(".")+1, x.lastIndexOf("-"));
		s += x;
		return s;
	}

Cependant, je rencontre un nouveau problème. Le login que je récupère est sous la forme "dupont/-henry" (nom/-prénom). Pour ce genre de login, tout va bien. Mais dès qu'il s'agit d'un login avec mon composé, il ne m'affiche qu'une partie de ce que je souhaite.

Je m'explique. Prenons le login suivant : ait/hellail-katia (le "/" remplace l'espace qu'il y a normalement dans le nom.
Avec la fonction précédente, quand je le test avec des "System.out.println", je récupère bien "ait hellail". Mais la valeur qui est retournée dans la zone de texte est la suivante : "ait" et je n'ai pas le "hellail" qui devrait suivre...

Je ne sais pas d'où ca peut venir... Si quelqu'un a une idée... Par avance, merci !

Edit:

PS : J'ai réalisé des test dans un main quelconque, et la fonction me retourne bien "ait hellail"... J'ai pensé alors que la zone de texte n'acceptais pas les espaces donc j'ai modifié un autre champ en ajoutant une valeur par défaut avec un espace et il me l'afficher correctement...

willbback

Bonjour,
n'ayant pas de message d'erreur, je te fais les différentes remarques d'usage :

Quote:

<%
HttpServletRequest req;
HttpSession Session = req.getSession();
String s = (String)Session.getAttribute("login");
s=s.substring(0, s.lastIndexOf("-"));
%>

name="salarie" size="20">


Session.getAttribute("login") peut très bien de renvoyer "null". Il faut donc tester le cas
Nikko

Merci de ta réponse Willback.

En fait, c'est impossible que getAttribute me retourne "null" puisque dans ma zone de texte, j'obtiens un résultat, mais ce résultat n'est pas suffisant. J'obtiens "ait" au lieu de "ait hellail".

Je viens seulement d'y penser, mais est-ce que dans un objet session, les string que l'on ajoute en paramètre peuvent contenir des "/" sans pour autant altérer la valeur du string ?

willbback

Nikko wrote:
Cependant, je rencontre un nouveau problème. Le login que je récupère est sous la forme "dupont/-henry" (nom/-prénom). Pour ce genre de login, tout va bien. Mais dès qu'il s'agit d'un login avec mon composé, il ne m'affiche qu'une partie de ce que je souhaite.

Je m'explique. Prenons le login suivant : ait/hellail-katia (le "/" remplace l'espace qu'il y a normalement dans le nom.

Ta fonction ne marche pas avec les exemples que tu donne. En effet, la chaine "dupont/-henry" ne comporte pas de point, donc tu as une exception StringIndexOutOfBoundsException à l'éxécution.
Peux-tu poster les bons exemples car en lisant ton code, je vois pas bien comment tu obtiens tes résultats

J'ai modifié l'appel s.lastIndexOf(". ") en s.lastIndexOf("/") et le x.lastIndexOf(".") en x.lastIndexOf("/") pour que ça marche avec tes exemples. Moi, ce que j'obtiens c'est

    dupont/-henry=>dupont ait/hellail-katia=>ait hellail
Donc....
Nikko

Oui, j'ai posté le mauvais code, mais ca marchais bien avec le remplacement du "." par "/"... Mais l'erreur subsiste... Je n'ai toujours que "ait" au lieu de "ait hellail".... Et je ne comprends pas pourquoi...

Nikko

Bon je viens de trouver la raison du pourquoi... J'ai tellement honte que je n'ose même pas mettre la raison...

J'ai oublié de mettre les "" autour de mon code java dans ma jsp... :oops:

Voici donc le code qui fonctionne :

<%!private ADO ado = new ADO(); %>

<p align="center"> <font face="Broadway"><input type="text" value="<%=ado.decoupLogin(request, response) %>" name="salarie" size="20"></font></p>

Merci de tes réponses et de ta patience pour tous mes sujets postés Willback !