Avatar billede andersbl Nybegynder
15. juli 2010 - 19:14 Der er 6 kommentarer og
1 løsning

Bønne/beans der bliver sat i JAVA og ikke JSP

Hej Eksperter
Jeg arbejder på at lave en måde hvorpå man kan kontrollere hvem der skal have adgang til hvad.
Måden det skal ske på er ved man åbner siden, og man aktiver en metode der sætter nogle parameter. De parameter skal sættes i en bønne så, jeg på samme side kan kalde fx getDK(); (returnere true/false)

Jeg har fået den til at åbne siden og sætte metoderne i bønne-klassen, men de bliver ikke gemt, så når jeg kalder getDK(); returneres den NULL.

Hvordan sikre jeg mig at bønnen husker variablen så der ikke returneres NULL?
Avatar billede arne_v Ekspert
15. juli 2010 - 20:19 #1
Er boennen i request scope og det er forskellige requests?
Avatar billede andersbl Nybegynder
16. juli 2010 - 08:34 #2
Hej Arne_v
Et meget simpel udgave der viser problemet kommer her.
Åbner JSP side
Java metode bliver aktiveret, bønne bliver sat
JSP side kalder get-metoder(og her parameteren er som om den ikke er sat)
===============================================
JSP side
===============================================
<%@page language="java" contentType="text/html; charset=ISO-8859-1"%>
<%@ page import="java.util.*, utilities.*, java.text.NumberFormat, java.lang.reflect.InvocationTargetException" %>
<jsp:useBean id="dataBean" scope="session" class="test.MenuAccess"/>

<html>
<head>
<title>run</title>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<meta name="GENERATOR" content="Rational Application Developer">
</head>
<body>

<%
test.adgang.authorized();
%>

<%
System.out.println("Test " +dataBean.getTest());
%>

</body>
</html>

===============================================
JAVA (test.adgang) klasse
===============================================
package test;

import java.lang.reflect.InvocationTargetException;
import org.apache.commons.beanutils.*;

public class adgang {
    public static void  main(String arg[]) {
    }
    public static void authorized() {
MenuAccess u = new MenuAccess();
                try {
                    PropertyUtils.setProperty(u, "test", "tst");
                } catch (IllegalAccessException e) {
                    e.printStackTrace();
                } catch (InvocationTargetException e) {
                    e.printStackTrace();
                } catch (NoSuchMethodException e) {
                    e.printStackTrace();
                }
       
    }
}

===============================================
Bønne-klasse MenuAccess
===============================================
package test;

public class MenuAccess implements java.io.Serializable {
    private static final long serialVersionUID = -8646942379008731464L;
    private String test;
   
    public MenuAccess() {
    }
   
    public String getTest() { return test;    }
    public void setTest(String test) {    this.test = test; }
}
Avatar billede arne_v Ekspert
16. juli 2010 - 15:22 #3
<jsp:useBean id="dataBean" scope="session" class="test.MenuAccess"/>

og

MenuAccess u = new MenuAccess();

er to forskellige instanser af boennen.

Det er klart at naar du saetter en varedi i en instans saa er vaerdien ikke i den anden instans.
Avatar billede arne_v Ekspert
16. juli 2010 - 15:24 #4
test.adgang.authorized();

->

test.adgang.authorized((MenuAccess)session.getAttribute(dataBean));

og

    public static void authorized() {
MenuAccess u = new MenuAccess();
                try {
                    PropertyUtils.setProperty(u, "test", "tst");

->

    public static void authorized(MenuAccess u) {
                try {
                    PropertyUtils.setProperty(u, "test", "tst");
Avatar billede arne_v Ekspert
16. juli 2010 - 15:25 #5
Naar typen af u er kendt behoever du ioevrigt ikke saette property paa navn.
Avatar billede andersbl Nybegynder
29. juli 2010 - 15:52 #6
det hele er lykkes.. tak for hjælpen arne_v.. smider du lige et svar
Avatar billede arne_v Ekspert
29. juli 2010 - 16:04 #7
svar
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