Bonjour,
Je réalise une applie en Servlet/jsp. J'utilise Tomcat 5.5 et eclipse europa 3.3 plugin WTP.
J'ai commencé ma première page index.jsp sur laquelle l'utilisateur aura le choix de la langue. J'utilise la balise fmt:SetLocal pour pose le locale soit en "en" soit en "fr". J'ai deux fichiers suffixés _fr ou _en.properties avec les cles.Ensuite grace à la balise "fmt:message " je récupère la valeur de la cle. En statique la page fonction sans problème mais lorsque j'ajoute un menu déroulant avec les langues j'ai des erreurs.
J'ai fait une servlet qui met le Locale en français ou en anglais en fonction de la valeur dans le menu déroulant et ensuite recharge la page index. Là j'ai l'erreur suivante :Erreur dans la servlet..???java.lang.NullPointerException
ServletInternalisation.doGet(ServletInternalisation.java:25)
ServletInternalisation.doPost(ServletInternalisation.java:41)
javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
Voici le code de la servlet:Cela est le premier souci que je ne voit pas pourqoui il ne marche pas!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 public class ServletInternalisation extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet { static final long serialVersionUID = 1L; public ServletInternalisation() { super(); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //compare la valeur de l'ttribue langue et je met le locale if (request.getAttribute("langue").equals("Français") ) { Locale locale = Locale.FRENCH; response.setLocale(locale); getServletContext().getRequestDispatcher("/index.jsp").forward(request, response); } if (request.getAttribute("langue").equals("English")) { Locale locale = Locale.ENGLISH; response.setLocale(locale); //appel de la page index.jsp getServletContext().getRequestDispatcher("/index.jsp").forward(request, response); } } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request,response); } }
Secondo:
dans la page index :
Ici j'ai remarqué que la balise <fmt:setLocale value="qqch" scope="session"/>
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32 <%@ taglib uri="cjstl" prefix= "c" %> <%@ taglib uri="fmtjstl" prefix="fmt"%> <fmt:setLocale value="<%=response.getLocale().toString().substring(0,2)%>" /> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Authentification GestionProspect</title> </head> <hr> <table> <tr> <td><fmt:bundle basename="prospect"> <fmt:message key="p_langue" /> </fmt:bundle></td> <td> <form action="ServletInternalisation" method="POST"> <select name="langue" size="1" onChange="this.form.submit()"> <option value="fr">Français</option> <option value="en">English</option> </select> <noscript><input type="submit" value="Changer"></noscript> </form> </td> </tr> </table>
n'accepte pas la variable session. Et pourtant j'ai utilisé la doc sur le site jsp2.pdf qui donne un exemple avec scope="session". En plus j'ai fait des recherches sur internet mais des forums sans suite au sujet. Donc si quelqu'un a un explication svp à l'aide.![]()
Partager