страница не обрабатывается с помощью ajax в Jsf 2.0 - PullRequest
0 голосов
/ 30 марта 2012

Я столкнулся с очень странной проблемой. После отладки со своей стороны я решил опубликовать тот же вопрос на форуме.

Проблема: : у меня есть 2 таблицы данных JSF, которые содержат «TableA» и «TableB». У меня есть некоторые элементы в Таблице B, и теперь я хочу переместить некоторые статьи на основе критериев, чтобы перейти в Таблицу A и удалить или не увидеть их в TableB.

Я могу добавить элементы в TableA и вижу, что элемент был удален из TableB также через отладчик, так как я печатал элементы, присутствующие в TableB, но те же изменения не отражаются в пользовательском интерфейсе.

Код:

<div id="selectedTableId" class="ArtSlected">
<h:dataTable id="selectedArtTable" value="#{articleBean.artList1}" var="sel" width="100%" border="0" cellspacing="0"
             cellpadding="0" columnClasses="center" class="TableStyle">
  <h:column>
    <h:commandButton id="deleteArticle" image="../resources/images/Delete.png" action="#{articleBean.deleteAction}">
      <f:setPropertyActionListener target="#{articleBean.articuloPromocionVO}" value="#{sel}"/>
      <f:ajax render=":articleSelectionForm:artDescTable selectedArtTable" execute="@form"/>
    </h:commandButton>
  </h:column>
  <h:column>
    <f:facet name="header">#{msgs.mpromo_article_selection_articles_selected}</f:facet>
    #{sel.articuloNombre} - #{sel.descripcion}
  </h:column>
</h:dataTable>
</div>

Здесь articleSelectionForm - это имя формы artDescTable ссылается на TableA selectedArtTable ссылается на TableB.

Я пробовал много комбинаций для тега <f:ajax>, но ничего не получается. Пример,

<f:ajax render=":articleSelectionForm:artDescTable selectedArtTable" execute="@form" />
<f:ajax render=":articleSelectionForm:artDescTable :articleSelectionForm:selectedArtTable" execute="@form" />
<f:ajax render=":articleSelectionForm:artDescTable :articleSelectionForm:selectedTableId:selectedArtTable" execute="@form" />

Пожалуйста, скажите мне, где я ошибаюсь в понимании.

1 Ответ

0 голосов
/ 30 марта 2012

Должен ссылаться на идентификатор клиента компонента. Для начала, самый простой способ определить правильный идентификатор клиента - это открыть страницу в браузере, щелкнуть правой кнопкой мыши и Просмотреть исходный код и найти HTML-представление компонента JSF. Это будет выглядеть так

<table id="foo:bar:tableId" ...>

Вам нужно взять точно это значение и добавить к нему префикс :.

<f:ajax render=":foo:bar:tableId" ... />

Если он не имеет префикса :, символа по умолчанию NamingContainer, то он будет разрешен относительно текущего NamingContainer родительского элемента. Такими компонентами являются <h:form>, <h:dataTable>, <ui:repeat>, составные компоненты и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...