Domanda

Ho creato un semplice master / dettaglio usando myfaces e richfaces. Facendo clic su h: commandLink in rich: dataTable l'utente è in grado di aprire la vista di dettaglio e modificare l'entità.

Ora voglio creare un URL che consenta all'utente di aprire direttamente la vista dei dettagli. Normalmente lo farei creando un URL come /detail.jsp?id=12 - come posso farlo con JSF?

È stato utile?

Soluzione

Puoi costruire l'URL usando i parametri su un controllo link:

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

Nella pagina di destinazione, è possibile leggere l'id dalla mappa dei parametri, utilizzando direttamente il linguaggio delle espressioni o tramite un bean gestito.

Visualizza:

<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");
    }

}

dichiarazione 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>

Altri suggerimenti

Uso a4j: commandlink per passare prima l'id dell'entità per cui voglio mostrare i dettagli al bean di visualizzazione dettagli. E poi uso semplicemente document.location per navigare alla vista.

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

Se si utilizza JSF 1.2, è possibile utilizzare f: setPropertyActionListener:

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

Metodi di esecuzione dai parametri LinkButton

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top