2016-05-06 2 views
1

Теперь CustomerCaseController.customerCase.caseId является строкой чисел и работает, если я просто распечатаю его на странице xhtml в качестве заголовка или метки.Как передать значение параметра JSF в качестве параметра метода?

Я хотел бы вызвать метод findByCustomerCase(String caseId) в моем fileAttachmentController, но это не работает:

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

    ...table-contents... 

    </p:dataTable> 

Это было бы просто передать текст «customerCase» в качестве параметра метода findByCustomerCase, а не значением param customerCase. Как передать значение?

ответ

2

Ваша проблема в том, что вы используете f:param неправильным способом. Этот элемент не используется для определения локальной переменной. Это означает, что customerCase не является допустимой переменной в этой точке.

Вы получаете доступ к customerCaseController.customerCase.caseId, а не только customerCase, поэтому вам необходимо передать точно так же, как и аргумент, и пропустить все f:param.

Изменить код на следующее, чтобы получить доступ к желаемой caseId:

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

...table-contents... 

</p:dataTable> 

В случае, если вы хотите сохранить путь проведения локальной переменной рассмотрим следующие вместо f:param:

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

XML-пространство имен: xmlns:ui="http://java.sun.com/jsf/facelets"

Это позволит вам использовать свой код сверху. Просто замените f:param на этот фрагмент.

+0

Спасибо! Это работает. Наверное, я пока не привык к стороне xhtml. +1 для поднятия ui: param. –

Смежные вопросы