Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Pied de page JSP

2 réponses
Avatar
fred
Bonjour,

J'ai un problème basique en JSP (je suis sous Jonas 4.3.5)

Je veux inclure un pied de page commun dans toutes mes pages JSP, j'utilise
donc une balise <jsp:include>
Exemple:
<head>
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>

<body>
test
<jsp:include page="testFooter.jsp" />
</body>

Il se trouve que mon pied de page doit comporter un lien pointant vers le
haut de page.
Si je mets dans ma page testFooter.jsp quelque chose comme ça:
<a href="#">
Haut de page
</a>

alors ça marche pour la plupart des pages, le problème est que certaines
pages utilisent des paramètres passés dans l'URL, que je perds quand je
clique sur mon lien "Haut de page".
Du coup je me dis que je vais faire un truc du genre:

<%
String currentPagePath = (String) request.getRequestURL();
if (request.getQueryString() != null)
currentPagePath += "?" + request.getQueryString();
%>
<a href="<%=currentPagePath%>">
Haut de page
</a>

Et là ça ne marche pas, j'ai une exception ThreadDeath dont je ne comprends
pas la cause (cf plus bas)
Donc j'ai 2 questions:
1/ Pourquoi cette erreur ?
2/ Comment feriez-vous dans mon cas pour avoir dans le pied de page JSP, un
lien qui pointe toujours vers le haut de la page courante ?

Un grand merci pour votre aide.

Fred.



javax.servlet.ServletException
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:244)
javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
sun.reflect.GeneratedMethodAccessor402.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) java.lang.reflect.Method.invoke(Method.java:324) org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:243) java.security.AccessController.doPrivileged(Native Method) javax.security.auth.Subject.doAsPrivileged(Subject.java:500) org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:272) org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:161) java.security.AccessController.doPrivileged(Native Method) java.security.AccessController.doPrivileged(Native Method) org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:966) org.apache.jsp.testInclude_jsp._jspService(testInclude_jsp.java:48) org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94) javax.servlet.http.HttpServlet.service(HttpServlet.java:856) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236) javax.servlet.http.HttpServlet.service(HttpServlet.java:856) sun.reflect.GeneratedMethodAccessor402.invoke(Unknown Source) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) java.lang.reflect.Method.invoke(Method.java:324) org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:243) java.security.AccessController.doPrivileged(Native Method) javax.security.auth.Subject.doAsPrivileged(Subject.java:500) org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:272) org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:161) java.security.AccessController.doPrivileged(Native Method) org.dbforms.util.external.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:190) sun.reflect.GeneratedMethodAccessor477.invoke(Unknown Source) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) java.lang.reflect.Method.invoke(Method.java:324) org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:243) java.security.AccessController.doPrivileged(Native Method) javax.security.auth.Subject.doAsPrivileged(Subject.java:500) org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:272) org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:217)cause mèrejava.lang.ThreadDeath org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1229) org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1189) java.lang.ClassLoader.loadClassInternal(ClassLoader.java:302) org.apache.log4j.spi.LoggingEvent.<init>(LoggingEvent.java:145) org.apache.log4j.Category.forcedLog(Category.java:372) org.apache.log4j.Category.log(Category.java:864) org.apache.commons.logging.impl.Log4JLogger.error(Log4JLogger.java:192) org.apache.jasper.compiler.Compiler.generateClass(Compiler.java:412) org.apache.jasper.compiler.Compiler.compile(Compiler.java:497) org.apache.jasper.compiler.Compiler.compile(Compiler.java:476) org.apache.jasper.compiler.Compiler.compile(Compiler.java:464) org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:511) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:295) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236) javax.servlet.http.HttpServlet.service(HttpServlet.java:856) sun.reflect.GeneratedMethodAccessor402.invoke(Unknown Source) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) java.lang.reflect.Method.invoke(Method.java:324) org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:243) java.security.AccessController.doPrivileged(Native Method) javax.security.auth.Subject.doAsPrivileged(Subject.java:500) org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:272) org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:161) java.security.AccessController.doPrivileged(Native Method) java.security.AccessController.doPrivileged(Native Method) org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:966) org.apache.jsp.testInclude_jsp._jspService(testInclude_jsp.java:48) org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94) javax.servlet.http.HttpServlet.service(HttpServlet.java:856) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236) javax.servlet.http.HttpServlet.service(HttpServlet.java:856) sun.reflect.GeneratedMethodAccessor402.invoke(Unknown Source) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) java.lang.reflect.Method.invoke(Method.java:324) org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:243) java.security.AccessController.doPrivileged(Native Method) javax.security.auth.Subject.doAsPrivileged(Subject.java:500) org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:272) org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:161) java.security.AccessController.doPrivileged(Native Method) org.dbforms.util.external.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:190) sun.reflect.GeneratedMethodAccessor477.invoke(Unknown Source) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) java.lang.reflect.Method.invoke(Method.java:324) org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:243) java.security.AccessController.doPrivileged(Native Method) javax.security.auth.Subject.doAsPrivileged(Subject.java:500) org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:272) org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:217)

2 réponses

Avatar
JSC
fred wrote:
Bonjour,

J'ai un problème basique en JSP (je suis sous Jonas 4.3.5)

Je veux inclure un pied de page commun dans toutes mes pages JSP, j'utilise
donc une balise <jsp:include>
Exemple:
<head>
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>

<body>
test
<jsp:include page="testFooter.jsp" />
</body>



[...]

<%
String currentPagePath = (String) request.getRequestURL();
if (request.getQueryString() != null)
currentPagePath += "?" + request.getQueryString();
%>


A tout hazard, la partie:
String currentPagePath = (String) request.getRequestURL();
est-elle correct?
request.getRequestURL() est suppose retourner un StringBuffer, pas un
String.
Pour etre plus "propre" j'aurais mis:
*<code>*
<%
StringBuffer currentPagePathBuffer = request.getRequestURL();
if (request.getQueryString() != null) {
currentPagePathBuffer.append("?").append(request.getQueryString());
}
String currentPagePath = currentPagePathBuffer.toString();
%>
<a href="<%=currentPagePath%>">
Haut de page
</a>
*</code>*

--
JSC

Avatar
fred
"JSC" a écrit dans le message de news:
451217a1$0$5978$
A tout hazard, la partie:
String currentPagePath = (String) request.getRequestURL();
est-elle correct?


Bonjour,

merci pour la réponse, c'était effectivement la source du problème.
D'autre part l'erreur de compilation est bien plus évidente depuis que j'ai
désactivé log4j.
Par contre mon lien "Haut de page" ne marche pas beaucoup mieux. Je récupère
bien le contenu de l'URL, mais je rencontre les problèmes suivants:
- si dans ma page j'ai un bouton qui appelle une servlet 'toto' mon lien
devient http://serveur:port/webapp/servlet/toto et quand je clique dessus ça
ne donne rien...
- si ma page contient un formulaire. Si je le remplis et que je clique sur
mon lien haut de page, tous les champs sont remis à blanc...
Conclusion: c'est sûrement pas comme ça qu'il faut faire mais je n'ai pas
d'autres idées...
Si quelqu'un a une suggestion intéressante... mais là ça devient peut-être
plutôt de l'html (ou du javascript) et vous allez me dire de changer de
forum...

Fred.