Navegue para outra visualização passando um parâmetro

Meu ambiente atual é o JRE 1.7, JSF 2.2, Eclipse Luna. Em uma determinada página (entity_index.xhtml) do meu aplicativo, tenho o seguinte botão (PrimeFaces):

<p:commandButton value="Details" action="entity_details"
                 ajax="false" onclick="this.form.target='_blank'">
    <f:param name="id" value="#{entity.id}" />
</p:commandButton>

A idéia é fornecer um botão para que o usuário possa clicar nele e alguns detalhes da entidade atual serão mostrados em outra guia do navegador (páginaentity_details.xhtml) Este é um botão de muitos, então oentity_index.xhtml A página mostra muitas instâncias da Entidade, cada uma com um botão de detalhes.

O botão funciona no sentido em que uma nova guia é aberta e que a página correta (entity_details.xhtml) é mostrado, mas o ID da entidade nunca chega ao bean que lida com a página de detalhes (EntityDetailsMB) A página de detalhes é a seguinte:

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

Observe que existe um<f:metadata/> elemento dedicado a capturar o parâmetro enviado da página de índice e encaminhá-lo para oid propriedade emEntityDetailsMB, onde há o seguinte:

public Entity getEntity() {
    return entityById(id);
}

public Long getId() {
    return id;
}

public void setId(Long value) {
    id = value;
}

Porque osetId() o método nunca é chamado,getEntity() sempre retornanull.

O que falta para fazê-lo funcionar?

questionAnswers(1)

yourAnswerToTheQuestion