Thread CGI::Session und Objekte: wie komplexe Objekte in eine Session? (2 answers)
Opened by Gast at 2007-03-21 10:01

Gast Gast
 2007-03-21 10:01
#9829 #9829
Hallo,

ich arbeite mit CGI::Session und wuerde gerne ein Objekt in der Session speichern. Leider scheint er dann zum Teil die Objektinformationen zu verlieren, so dass ich spaeter nicht auf methoden des Objekts zu greifen kann.

ich habe in einem perl script folgenden Code:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
use strict;
use CGI::Session;
use GO::Parser;

my $session = new CGI::Session("driver:File", undef, {Directory=>'/tmp/user'});
print $session->header();
my $parser = new GO::Parser({handler=>'obj'}); # create parser object
$parser->parse("anatomy.obo"); # parse file -> objects
my $graph = $parser->handler->graph; # get L<GO::Model::Graph> objec
$session->param('graph', $graph);

my $roots = $graph->get_top_nodes();

das funktioniert alles, die untere methode wird aufgerufen und laeuft ohne fehler durch.

in einem weiteren script habe ich dann folgendes

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
use strict;
use CGI;
use CGI::Session;

my $anfrage = CGI->new();
my $session = new CGI::Session("driver:File", undef, {Directory=>'/tmp/user/'});

my $node = $anfrage->param('node');
my $graph = $session->param('graph');

print $session->header(),
$anfrage->start_html("Hello world"),
$anfrage->h3("You selected node $node"),
$anfrage->p($graph->get_top_nodes());
$anfrage->end_html();

und hier meldet mir dann mein apache
Quote
Can't locate object method "get_top_nodes" via package "GO::Model::Graph"


d.h. hier hat er die Informationen ueber das Objekt verloren, obwohl er noch weiss zu welcher Klasse es gehoert. Auch durch use GO::Model::Graph im 2. script aendert sich nix.

Fueg ich einen einfachen string zb "Hallo" in die session ein, so wird dieser richtigerweise im 2. script angezeigt.

Wie kann ich komplexere Objekte in eine Session hinzufuegen ?

Danke euch vielmals !

View full thread CGI::Session und Objekte: wie komplexe Objekte in eine Session?