2009-01-16 6 views
4

J'ai créé un maître simple/détail en utilisant myfaces et richfaces. En cliquant sur un lien h: commandLink dans le fichier riche: dataTable, l'utilisateur peut ouvrir la vue détaillée et éditer l'entité.ouvrir vue de détail avec la demande paramètre

Maintenant, je veux créer une URL qui permet à l'utilisateur d'ouvrir la vue détaillée directement. Normalement je le ferais en créant une URL comme /detail.jsp?id=12 - comment puis-je y parvenir avec JSF?

Répondre

2

Vous pouvez construire l'URL en utilisant des paramètres sur un contrôle de lien:

<h:outputLink value="reqscope.faces"> 
     <f:param name="id" value="#{row.id}" /> 
     <h:outputText value="link" /> 
    </h:outputLink> 

Sur la page cible, vous pouvez lire l'ID de la carte de paramètres, soit directement en utilisant le langage d'expression ou via un bean géré.

Vue:

<f:view> 
    id= <h:outputText value="#{param['id']}" /> 
    <br /> 
    id= <h:outputText value="#{lookupBean.id}" /> 
</f:view> 

Bean:

public class LookupBean implements Serializable { 

    public String getId() { 
     FacesContext context = FacesContext.getCurrentInstance(); 
     ExternalContext extContext = context.getExternalContext(); 
     Map<String, String> params = extContext.getRequestParameterMap(); 
     return params.get("id"); 
    } 

} 

déclaration faces-config.xml:

<managed-bean> 
    <managed-bean-name>lookupBean</managed-bean-name> 
    <managed-bean-class>reqscope.LookupBean</managed-bean-class> 
    <managed-bean-scope>request</managed-bean-scope> 
</managed-bean> 
0

J'utilise un a4j: commandLink pour passer d'abord l'identifiant de l'entité Je veux afficher les détails pour le bean de vue détaillée. Et puis j'utilise simplement document.location pour naviguer vers la vue.

<a4j:commandLink action="#{detailviewBean.setDetailID(entity.someid)}" value="#{entity.someid}" oncomplete="document.location='/app/detailview.seam'"/> 
0

Si vous utilisez JSF 1.2, vous pouvez utiliser f: setPropertyActionListener:

<h:commandLink action="#{reqscope.faces}"> 
    <h:outputText value="link"/> 
    <f:setPropertyActionListener 
     value="#{id}" 
     target="#{lookupBean.id}"/> 
</h:commandLink> 

Executing Methods From LinkButton Parameters

Questions connexes