Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien
Toon posts:

[JSP] property niet uit te lezen bij eigen bean

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik ben bezig met het opzetten van een webapplicatie waarvoor gebruik gemaakt wordt van JSP. Aangezien ik gebruik wil maken van een eigen bean, heb ik een simpele bean gemaakt om te testen. Ik kan echter de property niet uitlezen, en dus compiled mijn pagina niet in NetBeans. Bij het compilen worden de volgende foutmelding gegenereerd:

code:
1
org.apache.jasper.JasperException: Cannot find any information on property 'getFileName' in a bean of type 'nl.company.jsp.beans.imgRotateBean'


De code van mijn JSP pagina ziet er als volgt uit:

code:
1
2
3
4
5
6
7
8
<html>
  <body>
     <jsp:useBean id="img" 
        class="nl.company.jsp.beans.imgRotateBean" />
    <h1><jsp:getProperty name= "img" 
      property="getFileName" />">
  </body>
</html>


De bean zelf heeft de volgende code:

code:
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
package nl.company.jsp.beans;

import java.util.*;

public class imgRotateBean implements java.io.Serializable {
    private static int index = -1;
    private List fileNames;

    public imgRotateBean() {
        initFileList();
    }

    public String getFileName() {
        index++;
        if (index > fileNames.size() - 1) {
            index = 0;
        }
        return (String) fileNames.get(index);
    }

    private void initFileList() {
        fileNames = new ArrayList();
        fileNames.add("welkom300x300_1.jpg");
        fileNames.add("welkom300x300_2.jpg");
        fileNames.add("welkom300x300_3.jpg");
        fileNames.add("welkom300x300_4.jpg");
    }
}


Ik heb uiteraard de library met de gecompileerde klasse toegevoegd aan mijn NetBeans omgeving, de bean wordt dus ook netjes herkend. Weet iemand of ik toevallig wat over het hoofd zie? Zoeken op GoT en google heeft tot nog toe vrij weinig opgeleverd.

  • zwippie
  • Registratie: Mei 2003
  • Niet online

zwippie

Electrons at work

Snelle gok: Het scope attribuut mist bij de jsp:useBean tag?

How much can you compute with the "ultimate laptop" with 1 kg of mass and 1 liter of volume? Answer: not more than 10^51 operations per second on not more than 10^32 bits.


  • Kwistnix
  • Registratie: Juni 2001
  • Laatst online: 20:08
Je propbeert een property "getFileName" op te vragen die niet bestaat in jouw Bean.
Zie: http://java.sun.com/products/jsp/tags/syntaxref.fm10.html

Verwijderd

Topicstarter
FallenAngel666 schreef op zondag 25 november 2007 @ 16:03:
Je propbeert een property "getFileName" op te vragen die niet bestaat in jouw Bean.
Zie: http://java.sun.com/products/jsp/tags/syntaxref.fm10.html
Bedankt voor je reactie, maar.... ik heb toch gewoon een property getFileName ?:

code:
1
2
3
4
5
6
7
    public String getFileName() {
        index++;
        if (index > fileNames.size() - 1) {
            index = 0;
        }
        return (String) fileNames.get(index);
    }

  • momania
  • Registratie: Mei 2000
  • Laatst online: 19:29

momania

iPhone 30! Bam!

Je hebt een method getFileName ;)

Bij bean properties geef je alleen de property naam op. De jsp:getProperty tag maak daar dan get<propertynaam> van.

In jou geval dus:

property: fileName
jsp:getProperty maakt daarvan: getFileName

:Y)

[ Voor 76% gewijzigd door momania op 25-11-2007 16:30 ]

Neem je whisky mee, is het te weinig... *zucht*


Verwijderd

Topicstarter
momania schreef op zondag 25 november 2007 @ 16:27:
Je hebt een method getFileName ;)

Bij bean properties geef je alleen de property naam op. De jsp:getProperty tag maak daar dan get<propertynaam> van.

In jou geval dus:

property: fileName
jsp:getProperty maakt daarvan: getFileName

:Y)
Bedankt dit is inderdaad de oplossing!

[ Voor 15% gewijzigd door Verwijderd op 25-11-2007 16:50 ]


Verwijderd

Topicstarter
Mijn initiele probleem is nu gelukkig opgelost, er doet zich echter nog wel een ander probleem voor: als ik de jsp pagina compile, en start, wordt er een volgende error getoond:

code:
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
33
34
35
exception 

org.apache.jasper.JasperException: /cartoon2.jsp(6,6) The value for the useBean class attribute nl.company.jsp.beans.imgRotateBean is invalid.
    org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:510)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:375)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:368)


root cause 

org.apache.jasper.JasperException: /cartoon2.jsp(6,6) The value for the useBean class attribute nl.company.jsp.beans.imgRotateBean is invalid.
    org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:39)
    org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:405)
    org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:146)
    org.apache.jasper.compiler.Generator$GenerateVisitor.visit(Generator.java:1174)
    org.apache.jasper.compiler.Node$UseBean.accept(Node.java:1116)
    org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2163)
    org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:2213)
    org.apache.jasper.compiler.Node$Visitor.visit(Node.java:2219)
    org.apache.jasper.compiler.Node$Root.accept(Node.java:456)
    org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2163)
    org.apache.jasper.compiler.Generator.generate(Generator.java:3305)
    org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:198)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:295)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:276)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:264)
    org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:563)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:303)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:368)


Dit zou veroorzaakt kunnen worden door het ontbreken van een public constructor in de bean, maar zoals hierboven in de startpost is te zien, is deze gewoon aanwezig.

  • flowerp
  • Registratie: September 2003
  • Laatst online: 11-09 18:20
Verwijderd schreef op zondag 25 november 2007 @ 17:37:
Dit zou veroorzaakt kunnen worden door het ontbreken van een public constructor in de bean, maar zoals hierboven in de startpost is te zien, is deze gewoon aanwezig.
Over het algemeen zijn er 3 oorzaken voor een dergelijke melding:

1) Je class kan niet geladen worden via (getClassLoader().loadClass());
2) De waarde die je opgeeft is een interface, een abstracte class of een non-public class
3) De waarde die je opgeeft betreft een class zonder een default ctor

Het is idd vrij irritant dat Tomcat die generieke melding (value invalid) ipv de echte reden geeft. Ik gok dat reden 1) voor jou van toepassing is.

Controlleer of je .class file in WEB-INF/classes staat en maak eventueel even een bijna lege JSP pagina aan met alleen een scriptlet erop met een new [jouw class].

It's shocking to find how many people do not believe they can learn, and how many more believe learning to be difficult.

Pagina: 1