Meine aktuelle Umgebung ist JRE 1.7, JSF 2.2, Eclipse Luna. In einer bestimmten Seite (entity_index.xhtml
) meine Bewerbung habe ich folgende (PrimeFaces) Taste:Navigieren zu einer anderen Ansicht über einen Parameter
<p:commandButton value="Details" action="entity_details"
ajax="false" onclick="this.form.target='_blank'">
<f:param name="id" value="#{entity.id}" />
</p:commandButton>
Die Idee, eine Taste zur Verfügung zu stellen, damit der Benutzer es klicken und einige Details über die aktuelle Einheit werden in gezeigt werden ein weiterer Browser-Tab (Seite entity_details.xhtml
). Dies ist eine Schaltfläche von vielen, so dass die entity_index.xhtml
Seite viele Instanzen von Entity zeigt, jede mit einer Detail-Schaltfläche.
Die Schaltfläche funktioniert in dem Sinne, dass eine neue Registerkarte geöffnet wird und die richtige Seite (entity_details.xhtml
) angezeigt wird, die Entitäts-ID jedoch niemals zur Bean der Detailseite (EntityDetailsMB
) gelangt. Die Detailseite ist wie folgt:
<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>
Hinweis, dass es ein <f:metadata/>
Element gewidmet die Parameter aus der Index-Seite gesendet erfassen und an die id
Eigenschaft in EntityDetailsMB
weiterleiten, wo es den folgenden:
public Entity getEntity() {
return entityById(id);
}
public Long getId() {
return id;
}
public void setId(Long value) {
id = value;
}
Da die setId()
-Methode nie aufgerufen wird, gibt getEntity()
immer null
zurück.
Was fehlt, damit es funktioniert?
haben Sie versucht, ein Ergebnis zu machen und eine param zu bekommen Daten aus dem ersten JSF Seite –