2009-12-21 4 views
0

Amis,Comment créer un lien manuel sur un arbre dans Oracle APEX lorsque la protection d'état de session est activée?

Je suis confronté à un autre défi dans APEX et j'espère que vous pouvez aider.

J'ai créé un arbre en utilisant la méthode décrite dans John & Super livre de Scott, "Pro Application Express" par lequel le lien de page est stocké dans un tableau. Voici un exemple:

go to a page passing some parameters 

f?p=&APP_ID.:3:&SESSION.::::P3_IDENTIFIER,P3_FAMILY_NAME:&P2_IDENTIFIER.,&P2_FAMILY_NAME. 

Lorsque la page est exécutée cela fonctionne comme prévu. Je peux développer l'arbre et naviguer vers les paramètres de passage de page si nécessaire. Cependant, lorsque j'ai activé la protection d'état de session, ces liens «fabriqués à la main» ont cessé de fonctionner. Ce à quoi je m'attendais car le lien ne contient pas de somme de contrôle. Après une enquête, je vois que je dois utiliser APEX_UTIL.PREPARE_URL pour générer l'URL avec une somme de contrôle. Malheureusement, c'est là que je rencontre des problèmes. Je ne peux pas sembler pouvoir passer les valeurs de paramètres à la page appelante.

La requête de l'arbre original était:

select "IDENTIFIER" id, 
"PARENT_IDENTIFIER" pid, 
"TITLE" name, 
"LINK" link, 
null a1, 
null a2 
from <some table> 

J'ai ensuite changé cette option pour utiliser APEX_UTIL.PREPARE_URL:

.... 
APEX_UTIL.PREPARE_URL('f?p='||:APP_ID||':3:'||:APP_SESSION||'::::P3_IDENTIFIER,P3_FAMILY_NAME:&P2_IDENTIFIER.,&P2_FAMILY_NAME.') link, 
... 

et cela fonctionne, la page est appelée et je peux voir les valeurs de la paramètres passés. Mais je ne peux pas utiliser cette méthode car elle est limitée à une seule page!

Enfin j'ai essayé stocker le numéro de page, les paramètres et les valeurs des paramètres dans différentes colonnes du tableau que l'arbre est basé sur, puis les réunir:

... 
APEX_UTIL.PREPARE_URL('f?p='||:APP_ID||':'||navigate_to_page||':'||:APP_SESSION||'::::'||parameters||':'||parameter_values) link, 
... 

Where: 

navigate to page has the value of: 3 
parameters has the value of: P3_IDENTIFIER,P3_FAMILY_NAME 
parameter_values has the values of: &P2_IDENTIFIER.,&P2_FAMILY_NAME. 

Cela appelle maintenant la page, mais le paramètre les valeurs sont devenues littérales. donc où j'attends un identifiant, je vois & P2_IDENTIFIER et idem pour le nom de famille.

Qu'est-ce que je fais mal? Comment puis-je transmettre des valeurs à ma page appelée en utilisant apex_util_prepare_url?

En cas de besoin, les détails de mon environnement sont: Apex 3.2.1, Oracle Application Server 10.1.2.3. Oracle Database 10.2.0.3

Merci d'avance pour toute aide que vous pourriez être en mesure de fournir.

Répondre

1

Je pense que vous aurez besoin de résoudre ces variables, en utilisant la fonction v():

APEX_UTIL.PREPARE_URL('f?p='||:APP_ID 
||':'||navigate_to_page 
||':'||:APP_SESSION 
||'::::'||parameters 
||':'||v('P2_IDENTIFIER')||','||v('P2_FAMILY_NAME')) link, 

Sur une note de côté, vous devrez peut-être faire attention à P2_FAMILY_NAME car il est utilisé dans l'URL; cela ressemble à un champ de texte simple qui contient des données entrées par l'utilisateur?

+0

+1 et la réponse. Merci (encore!) Jeffrey qui a aidé. Merci également pour la note de côté sur les données entrées par l'utilisateur Cordialement Ian. –

Questions connexes