JSF - загрузка различных форм на основе значений mimetype в DataTable с использованием вызова AJAX - PullRequest
2 голосов
/ 11 декабря 2010

Для одного из моих проектов мне нужно загрузить разные формы на основе значений 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>

1 Ответ

3 голосов
/ 11 декабря 2010

Используйте атрибут rendered для условной визуализации компонентов в представлении.

<h:form id="form2">
    <h:panelGroup rendered="#{param.mime == 'text'}">
        <ui:include src="Text.xhtml"/>
    </h:panelGroup>
    <h:panelGroup rendered="#{param.mime == 'pdf'}">
        <object data="/<directory>/DisplayPdf.jsf" type="application/pdf" width="100%" height="100%">
    </h:panelGroup>
</h:form>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...