2016-05-06 28 views
1

Nun, customerCaseController.customerCase.caseId ist eine Zeichenfolge von Zahlen und funktioniert, wenn ich es nur auf der XHTML-Seite als Überschrift oder Bezeichnung drucken.Wie übergebe ich den Wert von JSF param als Methodenparameter?

Ich möchte die Methode findByCustomerCase(String caseId) in meinem fileAttachmentController nennen, aber das funktioniert nicht:

<f:param customerCase="#{customerCaseController.customerCase.caseId}" /> 
    <p:dataTable var="fileAttachment" 
    value="#{fileAttachmentController.findByCustomerCase(customerCase)}"> 

    ...table-contents... 

    </p:dataTable> 

Das ist nur der Text „customerCase“ als Parameter an die Methode findByCustomerCase passieren würde und nicht den Wert von der param customerCase. Wie kann ich den Wert weitergeben?

Antwort

2

Ihr Problem ist, dass Sie f:param den falschen Weg verwenden. Dieses Element wird nicht zum Definieren einer lokalen Variablen verwendet. Dies bedeutet, dass customerCase zu diesem Zeitpunkt keine gültige Variable ist.

Sie greifen auf customerCaseController.customerCase.caseId und nicht nur auf customerCase, so müssen Sie genau das gleiche Argument wie übergeben und überspringen Sie die ganze f:param.

Ihren Code zu folgenden Änderung Zugriff auf die gewünschten caseId zu erhalten:

<p:dataTable var="fileAttachment" 
value="#{fileAttachmentController.findByCustomerCase(customerCaseController.customerCase.caseId)}"> 

...table-contents... 

</p:dataTable> 

Falls Sie die Art und Weise eine lokale Variable den folgende statt f:param betrachten halten gerne halten:

<ui:param name="customerCase" value="#{customerCaseController.customerCase.caseId}" /> 

XML-Namespace: xmlns:ui="http://java.sun.com/jsf/facelets"

Damit können Sie Ihren Code von oben verwenden. Ersetzen Sie einfach f:param durch dieses Snippet.

+0

Danke! Das funktioniert. Ich glaube, ich bin noch nicht an die xhtml-Seite der Dinge gewöhnt. +1 für das Errichten der UI: Param. –