Мне трудно найти поддержку по этой теме, потому что я знаю, как передать параметры в шаблон.Я хочу передать параметры, которые будут использоваться не как параметры шаблона, а как компонент внутри шаблона.
Например, для простых лиц вы можете написать следующую логику для создания кнопки:
<p:commandButton action="#{printBean.print}">
<f:attribute name="report" value="report.jrxml" />
</p:commandButton>
Это нормально, когда мне не нужно передавать параметры.Однако мне нужно создать шаблон, который позволит мне указать параметры для динамической передачи в отчет.Моей первой попыткой было сделать следующее:
<p:commandButton actionListener="#{printBean.print}">
<f:attribute name="report" value="report.jrxml" />
<ui:insert name="reportParams" />
</p:commandButton>
, что позволило бы мне использовать шаблон следующим образом:
<ui:decorate template="templates/report.xhtml" >
<ui:define name="reportParams>
<f:attribute name="reportParam1" value="paramVal1" />
<f:attribute name="reportParam2" value="paramVal2" />
<f:attribute name="reportParam3" value="paramVal3" />
...
</ui:define>
</ui:decorate>
Однако переданные таким образом параметры не принимаются вмой слушатель действия в printBean, но параметр "report" есть.Я думаю, что атрибуты, передаваемые таким образом, интерпретируются как означающие, что они ссылаются на тег ui: define, а не на вставку в шаблон, как мне хотелось бы.
Есть ли альтернативный способ достижения того же пути?Имейте в виду, что я использую JSF 2.0 и Primefaces, но не Seam или любые добавленные библиотеки, и в идеале мне не нужно было бы добавлять какие-либо библиотеки, чтобы это работало.
Я прошу прощения, если ответ на этот вопрос уже существует, но поиск ответа на этот вопрос сводит с ума.
РЕДАКТИРОВАТЬ : число параметров является переменным, то есть я не могу просто использовать ui: param и поставить значение этого параметрав качестве значения атрибута в шаблоне, поскольку таких параметров может быть много.