Для одного из моих проектов мне нужно загрузить разные формы на основе значений mimetype, доступных в компонентах DataTable. У меня есть заголовок, содержание - DataTable в середине и отображение данных в нижнем колонтитуле. Нажмите на запись DataTable, чтобы загрузить данные в нижний колонтитул на основе значений mimetype. Например, mimetype - text будет вызывать текстовый bean-компонент и загружать содержимое, mimetype - pdf будет вызывать pdf-компонент и подключаемый модуль pdf и так далее.
Сейчас я могу отображать только одно содержимое mimetype на одной странице jsf. Мне нужно добиться этого на одной странице JSF. Может ли кто-нибудь отправить какие-либо материалы?
Вот пример кода, который я использую - для текста
<h:form id="form1">
<h:dataTable value="#{info.office.programmers}" var="programmer">
<h:column>
<f:facet name="header">Report Name</f:facet>
<h:commandLink id="reportName" value="#{programmer.reportName}">
<f:param name="RID" value="#{programmer.reportName}" />
<f:param name="mime" value="#{programmer.mimeType}" />
<f:ajax render=":form2"/>
</h:commandLink>
</h:column>
<h:column>
<f:facet name="header">Mime Type</f:facet>
<h:commandLink id="mimeType" value="#{programmer.mimeType}">
<f:param name="RID" value="#{programmer.reportName}" />
<f:param name="mime" value="#{programmer.mimeType}" />
<f:ajax render=":form2"/>
</h:commandLink>
</h:column>
</h:dataTable>
</h:form>
Нажатие на dataTable со ссылкой mimetype = "text" вызовет Text.xhtml
и отобразит текстовые данные.
<h:form id="form2">
<ui:include src="Text.xhtml"/>
</h:form>
Нажмите на DataTable с mimetype = "pdf", чтобы вызвать эту форму2
<h:form id="form2">
<object data="/<directory>/DisplayPdf.jsf" type="application/pdf" width="100%" height="100%">
</h:form>