Archief - JSP: variabelen doorgeven tussen verschillende beans

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Cybermunch

Legacy Member
Hallo,

Ik heb een loginformulier voor een JSP project,
deze gegevens sla ik op in "loginBean", nadat ik ben ingelogd met het activiteitsnr en het lidnr ga ik naar een volgende pagina.

Op die volgende pagina heb ik de volgende code staan:
Code:
<h4>
    <h:outputText value="Graag vernemen wij uw mening over deze activiteit: #{LoginMBean.activiteit}"/>
</h4>


In mijn LoginMbean:
Code:
    public String getActiviteit(int nr) {
        ActiviteitDAO dao = new ActiviteitDAO();
        return dao.getActiviteitsnaam(nr);
    }

Ik heb bv activiteitnr 16, via de code in de loginbean kan ik de naam van de activiteit wel op mijn pagina krijgen maar dan moet ik expleciet bij "return dao.getActiviteitsnaam(nr);" nr vervangen door 16, want de waarde doorgeven vanuit de jsp pagina naar de bean toe gaat niet.

Hoe kan ik maw die nr meegeven uit mijn loginBean.getActiviteitsnr ?

-----------------------------------------------------
Ik probeerde het ook al aan de hand van setters mijn variabele mee te geven:

in mijn loginBean:
Code:
   public String getSActiviteit() {
        loginmbean = new LoginMBean();
        loginmbean.setActiviteitsnr(this.activiteit);
        this.sActiviteit = loginmbean.getActiviteit();
        return sActiviteit;
    }

waarna ik in mijn loginMbean:
Code:
 public String getActiviteit() {
        ActiviteitDAO dao = new ActiviteitDAO();
        return dao.getActiviteitsnaam(this.activiteitsnr);
    }

In mijn jsp pagina:
Code:
<h:outputText value="Graag vernemen wij uw mening over deze activiteit: #{LoginBean.sActiviteit}"/>

Maar dit geeft een fout:
...jsp.JspException: Error getting property 'sActiviteit' from bean of type mct.data.beans.LoginBean

Dus kort samengevat, ik weet niet hoe ik tussen verschillende beans een waarde kan door geven. Hopelijk is het wat duidelijk (want JSP is nu niet mijn favo taaltje) en kan iemand mij daarmee helpen :oink:

PS. ik codeer JSP in netbeans 5.5, gebruik een Tomohawk server en naast de standaard library's ook My Faces + tomohawk library.

Greetz
cybermunch :music:

AsinuS

Legacy Member
Beste Cybermunch,

eerst en vooral, waarom heb jij geen aparte managed bean om uw activiteiten af te handelen? Ik snap het verband niet tussen uw inlogbean en uw activiteiten.

Als je waarden uit een bean wil gebruiken in een andere bean is het nodig om de ene bean als managed property in te stellen van de andere bean. Dan kan je bv in de getter van activiteitsnr van je ActiviteitenBean via je DAO de activiteittitle ophalen.

Grtz

AsinuS

Cybermunch

Legacy Member
Hallo Asinus,

Thx voor de reply
Ik mijn loginBean sla ik het activiteitsnr en het lidnr op. Ik wil echter aan de hand van dat activiteitsnr uit mijn database de naam van die activiteit ophalen. In mijn loginMbean heb ik dan de methode getActiviteit() die de waarde uit de database haalt.

Je zegt de ene bean als "managed bean property" in te stellen. Is dat dan gewoon op je source package rechtermuisknop en kiezen voor add new managed bean? Ik die hetzelfde bij een gewone bean, het enige verschil is de M ertussen.

Wanneer ik in mijn loginMbean bij getActiviteit() een absolute waarde meegeef bv 16 (=fictief activiteitsnr) dan kan ik de naam wel uit mijn DB halen.

Hopelijk weet je hier iets meer mee.

Grtz
Cybermunch

AsinuS

Legacy Member
Blijkbaar had ik de vraag niet zo groed begrepen, je hebt maar 1 bean en daar stop je alles in .. Als je inlogt, heb je een inputtext voor lidnr en activiteitsnr

jsp:
Code:
<h:inputText id="txtActNr" value="#{LoginBean.activiteitsnr}">

de ingevulde waarde komt dan in je backingbean terecht (na drukken op ne knop), nl in private String activiteitsnr; (met getter en setter)

In je bean gebruik je dan de getter GetActiviteitsnr om die waarde mee tegeven aan de methode die je DAO gebruikt om de activiteitsnaam om te halen by id.

grtz AsinuS

Cybermunch

Legacy Member
AsinuS zei:
In je bean gebruik je dan de getter GetActiviteitsnr om die waarde mee tegeven aan de methode die je DAO gebruikt om de activiteitsnaam om te halen by id.
Wanneer ik dan in mijn loginbean volgende methode toevoeg
Code:
    public String Activiteitnaam() {
        ActiviteitDAO dao = new ActiviteitDAO();
        return dao.getActiviteitsnaam(this.getActiviteit());
    }

Dan zou hij hiermee normaal moeten de naam uit de database halen aan de hand van het ingegeven activiteitsnr in de inputtext op login.jsp

In mijn volgende jsp-pagina spreek ik dan die loginbean aan en haal de waarde van die methode op met:
Code:
<h:outputText value="Graag vernemen wij uw mening over deze activiteit: #{LoginBean.Activiteitnaam}"/>


maar waneer ik van dan na mijn login scherm naar de volgende pagina wil gaan dan krijg ik volgende foutmelding:
org.apache.jasper.JasperException: javax.servlet.jsp.JspException: Error getting property 'Activiteitnaam' from bean of type mct.data.beans.LoginBean

Ik krijg ook die fout als ik in mijn loginBean met een absolute waarde werk.
Ik ben nochtans zeker dat er een activiteit is met nr 8. Want als ik het vanuit loginMbean uitvoer krijg ik wel de naam, maar dan moet ik eveneens een absolute waarde ingeven.
Code:
  return dao.getActiviteitsnaam(8);
Grtz
cybermunch

AsinuS

Legacy Member
probeer eens in de constructor van je LoginBean setActiviteitsNr(new String());

grtz

Cybermunch

Legacy Member
Dat gaat niet want hij verwacht een integer die ik zou moeten doorgeven.
En dan nog, ook al zet ik in mijn loginbean "return dao.getActiviteitsnaam(8)", dan zou hij toch de activiteitsnaam die hoort bij 8 moeten returnen.

Maar ik denk dat we hier niet over de zelfde bean bezig zijn, want activiteitsNr is in de loginMbean.

Ik heb het anders eens online gezet: www.cybermunch.be/files/public/jsp.rar

Grtz
cybermunch

AsinuS

Legacy Member
jamaar gij gebruikt ene methode als property .. is het niet beter private String activiteitsNaam te maken en de code die nu in die methode zit, in de getter van die string te steken?

grtz

Cybermunch

Legacy Member
That should do the trick :applause:
Raar dat je niet die waarde kunt returnen uit een methode.

Bedankt hé AsinuS :niceone:
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan