Navegue a otra vista pasando un parámetro
Mi entorno actual es JRE 1.7, JSF 2.2, Eclipse Luna. En cierta página (entity_index.xhtml
) de mi aplicación tengo el siguiente botón (PrimeFaces):
<p:commandButton value="Details" action="entity_details"
ajax="false" onclick="this.form.target='_blank'">
<f:param name="id" value="#{entity.id}" />
</p:commandButton>
La idea es proporcionar un botón para que el usuario pueda hacer clic y algunos detalles sobre la entidad actual se mostrarán en otra pestaña del navegador (páginaentity_details.xhtml
) Este es un botón de muchos, por lo que elentity_index.xhtml
La página muestra muchas instancias de Entity, cada una con un botón de detalles.
El botón funciona en el sentido de que se abre una nueva pestaña y que la página correcta (entity_details.xhtml
) se muestra, pero la identificación de la entidad nunca llega al bean que maneja la página de detalles (EntityDetailsMB
) La página de detalles es la siguiente:
<ui:composition xmlns="http://www.w3.org/1999/xhtml" xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.org/ui" xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:dsi="http://www.cce.ufpr.br"
template="/private/template/sbadmin.xhtml">
<f:metadata>
<f:viewParam name="id" value="#{entityDetailsMB.id}"/>
</f:metadata>
<ui:define name="content">
<h2 class="page-header">#{entityDetailsMB.entity.name}</h2>
<h:form id="form">
...
</ui:composition>
Tenga en cuenta que hay un<f:metadata/>
elemento dedicado a capturar el parámetro enviado desde la página de índice y reenviarlo alid
propiedad enEntityDetailsMB
, donde hay lo siguiente:
public Entity getEntity() {
return entityById(id);
}
public Long getId() {
return id;
}
public void setId(Long value) {
id = value;
}
Porque elsetId()
nunca se llama al métodogetEntity()
siempre vuelvenull
.
¿Qué falta para que funcione?