2010-01-13 2 views
2

Après avoir cliqué sur une image, l'utilisateur est redirigé vers une nouvelle page comme:valeur du paramètre perdu (cadre de couture)

/viewPalermoUser.seam?accountId=100245 

avec le code:

<s:link title="#{messages['palermo.userlist.view']}" view="/portal/custom/palermo/administration/viewPalermoUser.xhtml" 
          propagation="none"> 
         <f:param name="accountId" value="#{account.id}"/> 
         <img src="/static/portal/customer/palermo/find.png" style="border:none"/> 
        </s:link> 

Il y a un grain de soutien où Je prends l'identifiant du compte et j'imprime les informations du compte pour cet utilisateur (quand la page est rendue pour la première fois, tout va bien).

MAIS avoir un riche panneau à onglets et un bouton de recherche. Chaque fois que j'appuie sur un de ces éléments, la valeur de accountId est NULL, bien que dans l'url, elle soit OK, elle a donc une valeur réelle.

Je ne comprends pas pourquoi la valeur de accountId est perdue si une publication se produit?

Je prends la accountId comme:

@RequestParameter 
private Long accountId; 

Quelqu'un peut-il me donner un indice?

MISE À JOUR: Finalement cela fonctionne. Utilisez la page param comme Petar a suggéré. Avait des problèmes jusqu'à ce que je me suis rendu compte que:

Un paramètre de page de couture n'est pas disponible dans la méthode @Create du backing bean. Solution: créez une action de page pour utiliser ce paramètre. (doit être utile pour d'autres)

Merci.

+0

@Cristian Boariu Ajouté à la réponse première –

Répondre

2

Pour autant que je sais, @RequestParameter ne fonctionne que sur une demande initiale. Pour résoudre le problème, vous pouvez utiliser un paramètre de page Seam. Mettez dans votre page.Descripteur xml la balise suivante: <param name="accountId" value="#{backingBean.accountId}"/> Vous n'avez pas besoin de l'annotation @RequestParameter.

0

Après avoir cliqué sur une image, l'utilisateur est redirigé vers une nouvelle page - je suppose qu'il est appelé /viewPalermoUser.xhtml

Tout d'abord, un paramètre simple demande ne survit pas postback.

Pour résoudre votre problème, vous pouvez créer un paramètre de page

<page view-id="/viewPalermoUser.xhtml"> 
    <param name="courseId" value="#{courseHome.courseId}"/> 
</page> 

Ainsi, lorsque les avis Seam

<param name="courseId" value="#{courseHome.courseId}"/> 

Il crée un paramètre de page et en raison de l'attribut de valeur (non obligatoire), il est affecté à la propriété courseHome.courseId. Le paramètre de page survit à la publication JSF.

Si vous voulez accountId survivre à un postback en s: lien (ou s: bouton), vous devez créer un paramètre de page dans la vue-id que les matchs s: link view = "/ portal/custom/palerme /administration/viewPalermoUser.xhtml » attribut

nous avons donc besoin

<page view-id="/portal/custom/palermo/administration/viewPalermoUser.xhtml"> 
    <param name="courseId"/> 
</page> 

Lorsque vous utilisez le paramètre de page, vous n'avez pas à vous soucier de f: param. s: link en prend soin. Ainsi, votre paramètre de page accoutId est automatiquement ajouté au lien.

<s:link title="#{messages['palermo.userlist.view']}" view="/portal/custom/palermo/administration/viewPalermoUser.xhtml"/> 

salutations,

+0

Merci pour les explications claires. Désolé d'avoir pris la réponse de Petar comme réponse correcte, uniquement parce qu'elle a été postée plus tôt que la vôtre. Cordialement, Cristian. –

Questions connexes