Question

J'ai créé un maître / détail simple à l'aide de myfaces et richfaces. En cliquant sur un h: commandLink dans le rich: dataTable, l'utilisateur peut ouvrir la vue détaillée et éditer l'entité.

Je souhaite maintenant créer une URL permettant à l'utilisateur d'ouvrir directement la vue détaillée. Normalement, je le ferais en créant une URL du type /detail.jsp?id=12 - comment puis-je atteindre cet objectif avec JSF?

Était-ce utile?

La solution

Vous pouvez construire l'URL à l'aide de 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 mappe de paramètres, directement à l'aide du langage d'expression ou via un bean géré.

Voir:

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

Haricot:

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>

Autres conseils

J'utilise un lien de commande a4j: pour transmettre d'abord l'identifiant de l'entité pour laquelle je souhaite afficher des détails, ainsi que le bean de la vue détaillée. Et puis j'utilise simplement document.location pour accéder à la vue.

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

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>

Exécution de méthodes à partir de paramètres LinkButton

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top