我有一个复合组件,当我在复合组件中执行许多可能的操作之一时,它有一个我想作为参数发送的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),而是在整个复合组件中添加一个?
提前致谢!
答案 0 :(得分:0)
也许一个解决方案是使用viewparam
,但只有在您可以添加request
参数时才有效。
<f:metadata>
<f:viewParam value="#{your_bean.your_property_name}" name="request_param"/>
</f:metadata>
这里唯一的问题是,实现你的composite component
的人必须在需要时设置上述内容,但它仍然是必须为同一页面中的所有组件设置相同属性的问题的抽象。
答案 1 :(得分:0)
我认为<h:form>
包含在复合组件本身中。
只需使用纯HTML隐藏输入字段。
<h:form>
<input type="hidden" name="CC-Id" value="#{cc.attrs.id}" />
...
<p:commandButton />
<p:commandButton />
<p:commandButton />
...
</h:form>
对具体问题无关,在复合材料中使用整个表单有点奇怪。这是食物供阅读:in this answer