Avatar billede trp79 Nybegynder
30. juli 2005 - 13:17 Der er 18 kommentarer og
1 løsning

Problemer med include

Hejsa
Jeg har en log_ind.jsp og en menu.jsp. Sidstenævnte vil jeg gerne inkludere i den første. Yderligere har jeg en bønne Login.java, som begge jsp filer trækker på. Men jeg får en fejl, der siger"Tag attempted to define a bean which already exists: login" når jeg gør som nedenfor. Fjerner jeg derimod <jsp:userBean... fra menu.jsp, så kan den jo ikke finde login beanen :(

Håber nogen har en ide til hvordan jeg kommer videre, mvh
Torben

*************menu.jsp
<jsp:useBean id="login" class="ausumnet.Login" scope="session" />
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" sml:lang="da"
lang="da">
  <head>
    <title>Login</title>
    <link rel="stylesheet" type="text/css"
    href="css/common.css" media="screen" />
  </head>
  <body>
    <div id="rightcol">
        <ul id="menu">
          <li><a href="http://www.eb.dk">Ekstra bladet</a></li>
          <li><a href="http://www.exp.dk">Eksperten</a></li>
          <li><a href="http://www.hattrick.org">Hattrick</a></li>
          <li><a href="http://www.pol.dk">Den levende avis</a></li>
          <%
          if(login.isLoggetInd())
          {%>
            <li><a href="./opretBananType.jsp">Opret banantype</a></li>
        <%}%>
        </ul>
  </div>     
  </body>
</html>
*******************


*******************log_ind.jsp
<jsp:useBean id="login" class="ausumnet.Login" scope="session">
  <% login.init(application); %>  <%-- køres første gang bønnen bruges --%>
</jsp:useBean>
<%@ include file="menu.jsp"%>

<%
  //Hvis brugernavn og kode er sat i en cookie så brug dem:
  Cookie[] cookier = request.getCookies();
  if(cookier!=null)
    for (int i=0; i<cookier.length; i++) {
      Cookie c = cookier[i];
      System.out.println("cookie "+c.getName()+"="+c.getValue());
      if(c.getName().equals("brugernavn"))  login.setBrugernavn(c.getValue());
      if(c.getName().equals("password"))  login.setPassword(c.getValue());
    }
    //Hvis brugernavn og kode kommer med request-objektet så sæt dem:
%>
<jsp:setProperty name="login" property="brugernavn"/>
<jsp:setProperty name="login" property="password"/>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" sml:lang="da"
lang="da">
  <head>
    <title>Login</title>
    <link rel="stylesheet" type="text/css"
    href="css/common.css" media="screen" />
  </head>
  <body>
    <div id="banner">
      [Bla bla bla..].....
********************************
Avatar billede arne_v Ekspert
30. juli 2005 - 13:28 #1
Der skal kun laves en login og umiddelbart skulle jeg mene at du godt kan
fjerne den fra menu.jsp

Sådan forstå jeg ihvertfald <%@ include
Avatar billede trp79 Nybegynder
30. juli 2005 - 14:06 #2
Hvis jeg fjerner <jsp:useBean id="login" class="ausumnet.Login" scope="session" /> fra menu.jsp, så får jeg fejlen: "Error(19,20): variable login not found in class _menu", så den kan altså ikke finde "login", der bruges i if-sætningen i menu.jsp
Avatar billede trp79 Nybegynder
30. juli 2005 - 14:23 #3
Har du nogen ide om, hvordan jeg løser det? Et alternativ er selvfølgelig at lave to menu filer, og så inkludere ud fra en betingelse i log_ind.jsp. Altså if(login.isLoggetInd(){inkluder fil a}
else {inkluder fil b}
Avatar billede arne_v Ekspert
30. juli 2005 - 14:27 #4
jeg forstår det ikke

jeg har lige testet med

main.jsp:

<jsp:useBean id="x" class="java.util.ArrayList" scope="session"/>
<%@ include file="inc.jsp"%>
<%=x.get(0)%>

inc.jsp:

<%
x.add("en streng");
%>

og det virker fint.
Avatar billede arne_v Ekspert
30. juli 2005 - 14:27 #5
hov - undskyld - det skulle ikke have været et svar
Avatar billede arne_v Ekspert
30. juli 2005 - 14:29 #6
hvis man studerer den genererede Java kode så ser man:

      java.util.ArrayList x = null;
      synchronized (session) {
        x = (java.util.ArrayList) _jspx_page_context.getAttribute("x", PageContext.SESSION_SCOPE);
        if (x == null){
          x = new java.util.ArrayList();
          _jspx_page_context.setAttribute("x", x, PageContext.SESSION_SCOPE);
        }
      }
      out.write('\r');
      out.write('\n');

x.add("en streng");

      out.write('\r');
      out.write('\n');
      out.print(x.get(0));

hvilket ser meget includesk ud
Avatar billede arne_v Ekspert
30. juli 2005 - 14:32 #7
hvordan ser din genereret kode ud ?
Avatar billede arne_v Ekspert
30. juli 2005 - 14:32 #8
hm - det kan du sikkert ikke se - når du får fejl  ...
Avatar billede arne_v Ekspert
30. juli 2005 - 14:32 #9
du bruger Tomcat ikke ?
Avatar billede trp79 Nybegynder
30. juli 2005 - 14:56 #10
Nej jeg bruger faktisk bare JDevelopers indbygge OC4J server.
Men nej koden ligger der nok ikke når den ikke vil kompile det :(
Jeg prøver lige din kode af på min, 2.min...
Avatar billede trp79 Nybegynder
30. juli 2005 - 15:01 #11
Jeg får desværre samme fejl med dit eksempel. Måske det er på tide at smide JDev ud! og bruge Eclipse, Idea eller lign.
Avatar billede trp79 Nybegynder
30. juli 2005 - 15:02 #12
og så benytte tomcat eller resin sammen med et nyt IDE...
Avatar billede arne_v Ekspert
30. juli 2005 - 15:03 #13
Du kan vel også bruge JDeveloper til udvikling og deploye på Tomcat ?
Avatar billede trp79 Nybegynder
30. juli 2005 - 15:14 #14
Jo det er rigtigt, men jeg syntes det kunne være rart at kompile mine jsp sider inden jeg prøver dem af på fx tomcat, og på den måde fange en del fejl - Giver eclipse iøvrigt mulighed for dette? Yderligere så opfører JDev sig også lidt underlig(langsom) på mac.
Avatar billede arne_v Ekspert
30. juli 2005 - 15:24 #15
Der er ikke indbygget support for JSP i selve Eclipse.

Der skal du have fat på en plugin.

Men Tomcat's JSP compiler kan kaldes via f.eks. ant så enhvert IDE med ant support
bør kunne precompile JSP sider.
Avatar billede trp79 Nybegynder
30. juli 2005 - 15:34 #16
Hvis jeg lige opretter et andet spørgsmål, er det så noget du kan guide mig igennem? Altså såvel hvilke plugin du kan anbefale og opsætning af eclipse, så der er mulighed for prekompilation af jsp sider?
Avatar billede arne_v Ekspert
30. juli 2005 - 15:43 #17
jeg har aldrig prøvet - jeg skriver bare min JSP filer i en almindelig editor

små ting:
  - ingen war
  - et vindue med en editor som gemmer direkte ned i Tomcat træet
  - et vindue med en browser
  - se ret gem se ret gem se

større ting:
  - war
  - ant som compiler, pakker og deployer war
  - et vindue med en editor som gemmer ned i anr træet
  - et vindue med en browser
  - en kommando prompt hvor jeg kører ant
  - se ret gem ant ret gem ant ret gem ant se

Men hvis du går igang med Eclipse kan jeg da sagtens prøve.
Avatar billede trp79 Nybegynder
30. juli 2005 - 15:49 #18
Okay, så vender jeg lige tilbage med et spørgsmål. I første omgang om hvilke plugins, der kan anbefaldes til eclipse, så må jeg lige se tiden an angående prekompilering. Men nå man er ny i j2ee, så er det bare en rar feature at kunne det :)
Avatar billede trp79 Nybegynder
30. juli 2005 - 15:50 #19
Og så lukker jeg lige denne tråd - tak for hjælpen - vi fandt trods alt ud af, at det er JDev der har lidt problemer med at prekompilere jsp siderne...
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
Kurser inden for grundlæggende programmering

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