2014-12-18 2 views
0

Извините за мой английский.AJAX не отображается в JSF

delete Метод из TestMB:

public String delete(Post post) { 
    getDao().delete(post); 
    return "success"; 
} 

test.xhtml:

<h:form id="form1"> 
    <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". Если я снова нажму, страница обновится. Зачем?

, если я использую новый метод deleteTestMB от:

private String txt1="test"; 

public String delete() { 

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

    txt1=""; 

    return ""; 
} 

И новый test.xhtml:

<h:form id="form1"> 

    #{testMB.txt1} 

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

Я нажмите на ссылку "Del" и обновления страницы в течение 10 секунд.

Почему бы не работать в первом случае?

+0

После того, как ссылка была нажата, страница должна быть перенесена в 'success.xhtml' (с любым суффиксом - подразумеваемой навигацией по мере ее появления). 'TestMB' в первом случае выглядит неуклюжим. Он должен начинаться с письма с маленьким регистром. Является ли этот метод действия корректным, когда вы нажимаете ссылку в первом случае? Если он вызывается правильно, он должен обязательно перейти к целевой странице, если в середине нет ошибок/исключений. – Tiny

+0

Метод 'delete' работает в первом случае, он удаляет записи из db. Я не вижу ошибок в журнале стекловолокна. –

ответ

0

Я нашел проблему.

public List<Entity> getEntityList() { 

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

    return entityList; 
} 
+0

Что это? Вы нигде не упомянули в вопросе об этой неизвестной вещи. – Tiny

+0

Почему? Я написал ''. –

+0

Ну, на самом деле сложно представить, как вы решили реальную проблему - сравнивая содержание вопроса с данным ответом здесь, никто не мог себе представить, что такое написание такого кода могло бы решить проблему «* обновление страницы *». В качестве побочного примечания, писать бизнес-логику в методе геттера является плохой практикой. Методы Getter вызывают несколько раз. Как следствие, этот метод DAO выполняется несколько раз, вызывая любые инструкции SQL, если в методе 'findAll() DAO несколько раз выполняться в базе данных, что, естественно, является очень дорогостоящей операцией. – Tiny

Смежные вопросы