Загруженная страница JSF с JQuery не привязывает значения - PullRequest
1 голос
/ 04 мая 2011

Я использую событие oncomplete из a для динамической загрузки страницы JSF в div с помощью функции JQuery.Идея состоит в том, что когда пользователь нажимает кнопку редактирования рядом со строкой в ​​таблице данных, div заполняется страницей JSF, в которой есть некоторые поля ввода, связанные с атрибутами в моем компоненте поддержки.

 <p:commandButton id="btnEditCompany" value="Edit company" action="#{companyBean.navigateUser}" oncomplete="showCertificateEdit()">
                                    <f:setPropertyActionListener value="#{company}" target="#{companyBean.selectedCompany}"/>
                                </p:commandButton>

Это вызовет функцию в моем компоненте поддержки, которая должна установить некоторые поля со значением, соответствующим выбранному элементу в моей таблице данных.Но проблема в том, что поля не заполняются.Страница отображается после того, как мой метод выполняется, но поля остаются пустыми.

function showCertificateEdit() {
jQuery("#content").load('/profilemanager/editCompanyDetail.xhtml');

}

Это функция JQuery.

И это мои лицевые стороныстраница:

                        <p:tab title="My Companies">
                        <p:dataTable value="#{companyBean.companiesByUser}" var="company" id="companyTable"
                                     emptyMessage="No companies found for given user" paginator="true" rows="10"
                                     paginatorTemplate="{CurrentPageReport}  {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
                                     rowsPerPageTemplate="5,10,15">

                            <p:column headerText="name" sortBy="#{company.companyName}"
                                      filterBy="#{company.companyName}"
                                      filterMatchMode="contains"
                                      style="width: 100px;">
                                <h:outputText value="#{company.companyName}"/>
                            </p:column>
                            <p:column headerText="Start date" sortBy="#{company.startDate}"
                                      filterBy="#{company.startDate}"
                                      filterMatchMode="contains"
                                      style="width: 100px;">
                                <h:outputText value="#{company.startDate}">
                                    <f:convertDateTime pattern="dd/MM/yyyy" type="date" timeZone="CET"/>
                                </h:outputText>
                            </p:column>
                            <p:column headerText="End date" sortBy="#{company.endDate}"
                                      filterBy="#{company.endDate}"
                                      filterMatchMode="contains"
                                      style="width: 100px;">
                                <h:outputText value="#{company.endDate}">
                                    <f:convertDateTime pattern="dd/MM/yyyy" type="date" timeZone="CET"/>
                                </h:outputText>
                            </p:column>
                            <p:column>
                                <p:commandButton id="btnEditCompany" value="Edit company" action="#{companyBean.navigateUser}" oncomplete="showCertificateEdit()">
                                    <f:setPropertyActionListener value="#{company}" target="#{companyBean.selectedCompany}"/>
                                </p:commandButton>
                            </p:column>
                        </p:dataTable>
                        <p:commandButton action="#{companyBean.navigate}" id="btnAddCompany" value="Add company"/>
                    </p:tab>
                </p:accordionPanel>
            </h:form>

            <div id="content">

            </div>

1 Ответ

0 голосов
/ 04 мая 2011

Это может быть проще сделать с помощью f: ajax:

<h:panelGroup id="content" layout="block" rendered="#{companyBean.selectedCompany != null}">
    whatever content you want to load
</h:panelGroup>

и вашей командной кнопки:

<p:commandButton id="btnEditCompany" value="Edit company" action="#{companyBean.navigateUser}">
    <f:setPropertyActionListener value="#{company}" target="#{companyBean.selectedCompany}"/>
    <f:ajax render="content" />
</p:commandButton>

Таким образом, весь контент будет правильно загружен в компонентдерево.Вы можете использовать пользовательский интерфейс: include внутри блока содержимого для загрузки этого фасета, чтобы вы могли разделить код представления в другой файл.

...