Newsgroup: it.comp.java
Titolo: Problema <jsp:useBean>

Ho dichiarato un javaBean ed ho creato l'istanzia in una pagina Jsp:
<jsp:useBean id="Ana" class="Bean.AnagraficaBean" scope="session" />
avendo dichiarato il Bean visibile per tutta la sessione come faccio a
riprendere lo stesso JavaBean nella pagina Jsp che viene richiamata
successivamente?
pagina A
<jsp:useBean id="Ana" class="Bean.AnagraficaBean" scope="session" />
pagina B
<jsp:useBean id="Ana" class="Bean.AnagraficaBean" scope="session" />
Il problema è che nella pagina B mi viene creata una nuova istanza e di
conseguenza perdo tutti i valori che avevo assegnato ai membri del Bean
della pagina A.
Grazie mille

 della pagina A.
Strano... Non deve (non puň?) essere cosě. A meno che la sessione non scada
dopo 10 secondi....
Posta un pň di codice del tuo fagiolo...

 ha scritto nel messaggio
news:_FDia.275$DT4....@twister1.libero.it...

pagina A:
<%@page import="java.io.*" session="true"%>
<jsp:useBean id="Ana" class="Bean.AnagraficaBean" scope="session"/>
<HTML>
<HEAD>
<TITLE>Curriculum Dinamico</TITLE>
</HEAD>
<BODY>
  <FORM METHOD=POST ACTION="form2.jsp">
  Nome : <input type=text name=nome value="<%= Ana.getNome() %>"><BR>
  Cognome : <input type=text name=cognome value="<%= Ana.getCognome()
%>"><BR><BR>
  <input type=submit value="Continua"><BR>
  </FORM>
<%
  Ana.setNome(request.getParameter("nome"));
  Ana.setCognome(request.getParameter("cognome"));
  out.println("Nome: " + Ana.getNome()+"<br>");
  out.println("Cognome: " +  Ana.getCognome()+"<br>");
%>
</BODY>
</HTML>
pagina B:
<%@page import="java.io.*"%>
<jsp:useBean id="Ana" class="Bean.AnagraficaBean" scope="session"/>
<html>
<head>
<title>
form2
</title>
</head>
<body>
  <FORM METHOD=POST ACTION="form.jsp">
  Titolo : <input type=text name=titolo value=<%= Ana.getTitolo()%>><BR>
  Voto : <input type=text name=voto value=<%= Ana.getVoto() %>><BR><BR>
  <input type=button value="Indietro">&nbsp;&nbsp;
  <input type=submit value="Continua"><BR>
  </FORM>
<%
   out.println("Nome: " + Ana.getNome() + "<br>");
   out.println("Nome: " + Ana.getCognome() + "<br>");
%>
</body>
</html>
In pagina B , Ana.getNome() == "" e Ana.getCognome() == ""

 della pagina A.
Quanso usi <jsp:useBean> dalla pagina B deve prima controllare se in 
sessione c'è già il bean "Bean.AnagraficaBean". Se non lo trova ne deve 
istanziare uno nuovo. Comunque controlla se il bean è già in sessione 
facendo:
<%
Object bean = session.getAttribute("Bean.AnagraficaBean");
out.println("bean = " + bean);
%>
(Imposta il metodo toString() del bean in modo che sia visibile qualcosa 
di significativo).
Gaetano Bigliardi

...
Come si legge a
http://java.sun.com/products/jsp/syntax/1.1/syntaxref1115.html
<jsp:useBean 
		id="beanInstanceName" 
		scope="page|request|session|application"
	{	class="package.class" | 
		type="package.class" | 
		class="package.class" type="package.class" |
		beanName="{package.class | <%= expression %>}"
type="package.class"  
	}
	{ 	/>
class="package.class" 
Instantiates a bean from a class, using the new keyword and the class
constructor. The class must not be abstract and must have a public,
no-argument constructor. The package and class name are case
sensitive. 
mentre
type="package.class" 
If the bean already exists in the scope, gives the bean a data type
other than the class from which it was instantiated. The value of type
must be a superclass of class or an interface implemented by class. 
If you use type without class or beanName, no bean is instantiated.
The package and class name are case sensitive. 

 ha scritto nel messaggio
news:ld3m8vgm9iq8n7hp1...@4ax.com...
