如何将 JSF 参数的值作为方法参数传递?

How to pass JSF param's value as method parameter?

现在,customerCaseController.customerCase.caseId 是一串数字,如果我将它作为标题或标签打印在 xhtml 页面上,它就可以正常工作。

我想在我的 fileAttachmentController 中调用方法 findByCustomerCase(String caseId),但这不起作用:

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

   ...table-contents...

   </p:dataTable>

这只会将文本 "customerCase" 作为参数传递给方法 findByCustomerCase 而不是参数 customerCase 的值。如何传递值?

你的问题是你使用 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