Avatar billede sbeier Nybegynder
13. juli 2010 - 15:43 Der er 8 kommentarer og
1 løsning

Kald en static metode fra JSP

Jeg er ved at lave en hjemmeside med tomcat
Her har jeg java klassen ./WEB-INF/classes/Utility.java
I den klasse har jeg en static metode som jeg gerne vil kalde fra jsp siden ./index.jsp

Kan det lade sig gøre?

det jeg har hidtil er
<%@page import="Utility"%>
<jsp:include page="header.jsp">
    <jsp:param name="showLogin" value="true" />
    <jsp:param name="loggedIn" value="<%= Utility.isLoggedIn(request.getSession()).toString(); %>" />
</jsp:include>

men den brokker sig over at den ikke kan finde Utility
Avatar billede arne_v Ekspert
13. juli 2010 - 16:10 #1
Proev med:

WEB-INF/classes/dinpakke/Utility.class  (compiled fra Utility.java)

<%@page import="dinpakke.*"%>
Avatar billede sbeier Nybegynder
13. juli 2010 - 16:54 #2
Nope.. får følgende fejl

org.apache.jasper.JasperException: Unable to compile class for JSP:

An error occurred at line: 6 in the generated java file
The import WEB cannot be resolved

An error occurred at line: 6 in the generated java file
Syntax error on tokens, delete these tokens

An error occurred at line: 3 in the jsp file: /index.jsp
Utility cannot be resolved
1:
2: <%@page import="WEB-INF/classes/Utility.class"%>
3: <jsp:include page="header.jsp">
4:     <jsp:param name="showLogin" value="true" />
5:     <jsp:param name="loggedIn" value="<%= Utility.isLoggedIn(request.getSession()).toString() %>" />
6: </jsp:include>

Kunne det være "-" i WEB-INF som skal skrives anderledes?

btw.. har opdaget at der er en katagori som hedder JSP. Skulle nok ha' smidt tråden in der istædet, så hvis en moderator kommer forbi kunne han jo flytte tråden ;)
Avatar billede sbeier Nybegynder
13. juli 2010 - 17:05 #3
hmm. tror lige jeg misforstod dig første gang jeg læste det - har fået det til at virke nu

Jeg lavede en ny pakke, og smed utility.java ind i den, og importerede hele pakken i jsp siden. Tror det var det du mente.

Smid et svar så sender jeg pointne over
Avatar billede arne_v Ekspert
13. juli 2010 - 17:07 #4
svar
Avatar billede arne_v Ekspert
13. juli 2010 - 17:08 #5
Problemet er at man ikke kan bruge default/tom pakke fra JSP sider.

Angives der ikke nogen pakke tror JSP/Java nemlig at klassen er i samme pakke som JSP siden ender op i - og det er ikke default/tom.
Avatar billede arne_v Ekspert
20. juli 2010 - 03:33 #6
To ekstra kommentarer:

1) Hvis du bruger et framework som Struts eller JSF så er Tiles en meget god måde at få faste header/footer/whatever på siderne.

2) Er det nødvendigt at angive de parametre til header.jsp - kan den ikke selv hente dem?
Avatar billede sbeier Nybegynder
20. juli 2010 - 14:56 #7
1:
Hmm. jeg bruger bare Tomcat.. regner ikke med der er nogle andre frameworks med der. Det er ikke så besværligt at inkludere headere og footere i jsp, så jeg tror jeg klarer mig uden :)

2:
Det kommer an på hvordan include virker - har ikke eksperimenteret med det. Hvis jsp inkluderer en side ved at navigere og downloade den, så er der vel ikke adgang til den rigtige request variabel. Men når du spørger sådan, gætter jeg på at det er klientens request variabel der er adgang til i headderen, og så kunne headeren vel selv finde ud af om han er logget ind.
Avatar billede arne_v Ekspert
21. juli 2010 - 04:07 #8
re 2)

Du har en anden request, men du bør have samme session !
Avatar billede arne_v Ekspert
21. juli 2010 - 04:07 #9
PS: du kan i JSP referere direkte til session fremfor at bruge request.getSession()
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester