powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / JSF, ajax не обновляет страницу
6 сообщений из 6, страница 1 из 1
JSF, ajax не обновляет страницу
    #38837975
23r9
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть метод delete в TestMB, он удаляет записи из БД:
Код: java
1.
2.
3.
4.
public String delete(Post post) {
    getDao().delete(post);
    return "success";
}



Файл test.xhtml, вывожу записи из бд через тег <ui:repeat>:

Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
   <ui:repeat value="#{TestMB.entityList}" var="entityList">

        <p>
            #{entityList.name}

            <h:commandLink action="#{TestMB.delete(entityList)}">
                del
                <f:ajax render=":form1"/>
            </h:commandLink>
        </p>
    </ui:repeat>


</h:form>



После нажатия на ссылку "del"страница не обновляется, хотя запись удалилась. Если еще раз кликнуть по ссылке то запись исчезает. Честно говоря думал что ajax просто не ждет пока удалится запись и сразу обновляет. Сделал без удаления в БД.

Новый метод delete в TestMB:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
private String txt1="test";

public String delete() {

    try{
        Thread.sleep(Long.valueOf("10000"));
    }catch(Exception ex){

    }

    txt1="";

    return "";
}



Новый test.xhtml:
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
<h:form id="form1">

            #{testMB.txt1}

            <h:commandLink action="#{testMB.delete}">
                del
                <f:ajax render=":form1"/>
            </h:commandLink>
</h:form>



Кликаю по ссылке "del" и через 10 секунд переменная #{testMB.txt1} на странице очищается.

Вопрос, почему в 1 случае не ждет?
...
Рейтинг: 0 / 0
JSF, ajax не обновляет страницу
    #38837979
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
23r9,
программируй с отладкой...пошаговой...
...
Рейтинг: 0 / 0
JSF, ajax не обновляет страницу
    #38837981
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
23r9Честно говоря думал что ajax просто не ждет пока удалится запись и сразу обновляет.
в общем случае, он ждёт удаления в БД, потом обновляет контрол\DOM
...
Рейтинг: 0 / 0
JSF, ajax не обновляет страницу
    #38837996
ivanra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Странный clientId ":form1". Должно быть без двоеточия, можете проверить html код страницы. Или так тоже работает?
...
Рейтинг: 0 / 0
JSF, ajax не обновляет страницу
    #38838063
ivanra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
и еще
Код: java
1.
getDao().delete(post);

вовсе не обозначает, что обновится список TestMB.entityList. Тут 2 варианта:
1) TestMB - сессионный бин. В этом случае список никогда не обновится, пока не будет насильно перечитан
2) TestMB - query бин. В этом случае список восстанавливается из базы в фазе восстановления представления, и метод getDao().delete(post), который вызывается в фазе выполнения (application phase), на состав списка entityList уже не влияет. Но зато влияет при следующем обращении, как и написано выше.
Поэтому, в обоих случаях, надо после удаления сразу же перечитать список из базы, либо удалить из него элемент вручную
...
Рейтинг: 0 / 0
JSF, ajax не обновляет страницу
    #38838477
23r9
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторСтранный clientId ":form1". Должно быть без двоеточия, можете проверить html код страницы. Или так тоже работает?

Если указать без двоеточия будет ошибка.

Код: xml
1.
javax.faces.FacesException: <f:ajax> contains an unknown id 'form1' - cannot locate it in the context of the component j_idt51



Возможно это из-за <ui:repeat>, но тут как бы проблемы нет, работает с двоеточием и слава богу.

автор2) TestMB - query бин. В этом случае список восстанавливается из базы в фазе восстановления представления, и метод getDao().delete(post), который вызывается в фазе выполнения (application phase), на состав списка entityList уже не влияет. Но зато влияет при следующем обращении, как и написано выше.
Поэтому, в обоих случаях, надо после удаления сразу же перечитать список из базы, либо удалить из него элемент вручную

Не знаю таких точных подробностей но проблему нашел в другом, благодаря вам, за что спасибо.

Метод getEntityList:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
public List<Entity> getEntityList() {

        //if(entityList == null){
            entityList=getDao().findAll(getPageRequest());
        //}

        return entityList;
    }
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / JSF, ajax не обновляет страницу
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]