Pregunta

Creé un maestro / detalle simple usando myfaces y richfaces. Al hacer clic en un h: commandLink en la tabla rich: data, el usuario puede abrir la vista detallada y editar la entidad.

Ahora quiero crear una URL que permita al usuario abrir la vista detallada directamente. Normalmente lo haría creando una URL como /detail.jsp?id=12. ¿Cómo puedo lograrlo con JSF?

¿Fue útil?

Solución

Puede construir la URL utilizando parámetros en un control de enlace:

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

En la página de destino, puede leer la identificación del mapa de parámetros, ya sea directamente usando el lenguaje de expresión o mediante un bean administrado.

Ver:

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

Frijoles:

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

}

declaración 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>

Otros consejos

Utilizo un enlace de comando a4j: para pasar primero la identificación de la entidad para la que quiero mostrar detalles al bean de vista de detalles. Y luego simplemente uso document.location para navegar a la vista.

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

Si está utilizando JSF 1.2, puede usar f: setPropertyActionListener:

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

Métodos de ejecución de los parámetros de LinkButton

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top