Как передать значение параметра JSF в качестве параметра метода?
Теперь customerCaseController.customerCase.caseId - это строка чисел, которая работает, если я просто напечатаю ее на странице xhtml в качестве заголовка или метки.
Я хотел бы назвать метод findByCustomerCase(String caseId)
в моем fileAttachmentController
но это не работает:
<f:param customerCase="#{customerCaseController.customerCase.caseId}" />
<p:dataTable var="fileAttachment"
value="#{fileAttachmentController.findByCustomerCase(customerCase)}">
...table-contents...
</p:dataTable>
Это просто передало бы текст "customerCase" в качестве параметра методу findByCustomerCase, а не значение параметра customerCase. Как я могу передать значение?
1 ответ
Ваша проблема в том, что вы используете 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
с этим фрагментом.