如何将 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
。
现在,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
。