Jsf 在复合组件的每个操作上向请求发送参数

Jsf 在复合组件的每个操作上向请求发送参数,jsf,primefaces,composite-component,param,Jsf,Primefaces,Composite Component,Param,我有一个复合组件,它有一个id,我想在复合组件内执行许多可能的操作时将其作为参数发送。我知道我可以用这样的东西 <h:form id="testForm"> <p:commandButton value="#{testReqBean.label}" actionListener="#{testReqBean.perform()}" process="@this or @form" up

我有一个复合组件,它有一个id,我想在复合组件内执行许多可能的操作时将其作为参数发送。我知道我可以用这样的东西

<h:form id="testForm">
    <p:commandButton value="#{testReqBean.label}" 
                     actionListener="#{testReqBean.perform()}"
                     process="@this or @form" update="@form" ajax="true" >
           <f:param value="#{cc.attrs.id}" name="CC-Id" />
     </p:commandButton>
</h:form>

现在,假设我在复合组件中有许多具有特定操作的窗体或按钮。。。有没有办法定义我只想在请求中发送一次的参数?我的意思是不是在每个表单/按钮中添加一个f:param(取决于进程@form或@this),而是为整个复合组件添加一个


提前谢谢

一种解决方案可能是使用
viewparam
,但这只有在您可以添加
请求
参数时才有效

<f:metadata>
    <f:viewParam value="#{your_bean.your_property_name}" name="request_param"/>
</f:metadata>

这里唯一的问题是,无论谁实现了您的
复合组件
,都必须在需要时设置上述内容,但这仍然是一个抽象问题,即必须为同一页面中的所有组件设置相同的属性。

我推测
包含在复合组件本身中

只需使用一个普通的HTML隐藏输入字段

<h:form>
    <input type="hidden" name="CC-Id" value="#{cc.attrs.id}" />
    ...
    <p:commandButton />
    <p:commandButton />
    <p:commandButton />
    ...
</h:form>

...
...

与具体问题无关,将整个形式组合在一个组合中有点奇怪。这就是阅读的食物: