Как передать значение параметра 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 с этим фрагментом.

Другие вопросы по тегам