Atributo de renderização Ajax não funciona em ah: dataTable no JSF2

Eu tenho alguns problemas com um aplicativo simples no JSF 2.0.

Eu tento construir uma lista de tarefas com suporte ajax. Eu tenho algumas strings todo que eu exibo usando uma tabela de dados. Dentro dessa tabela de dados, eu tenho um commandLink para excluir uma tarefa. O problema agora é que a tabela de dados não é renderizada novamente.

          

Obrigado pela ajuda.

Editar (TodoController):

 @ManagedBean @SessionScoped public class TodoController { private String todoStr; private ArrayList todos; public TodoController() { todoStr=""; todos = new ArrayList(); } public void addTodo() { todos.add(todoStr); } public void removeTodo(String deleteTodo) { todos.remove(deleteTodo); } /* getter / setter */ } 

(Parece que eu não tenho reputação suficiente para comentar sobre as respostas dos outros)

Eu acho que o FRotthowe sugere envolver a tabela com outro elemento e referenciá-lo usando referência absoluta (ou seja, nomeando todos os containers pai a partir da raiz do documento) a partir da tag .

Algo assim:

            

Mas, usar referências absolutas é sempre uma fonte de problemas e aumenta exponencialmente o tempo de refatoração à medida que a visualização cresce.

Não existe uma maneira de apenas renderizar a tabela a partir de uma tag (impedir que o jsf adicione aqueles irritantes “: number_of_row” no evento ajax)?

Eu suponho que o é fechado por um formulário?

Depois de enfrentar esse problema por um tempo, eu pesquisei uma solução fácil e limpa: adicione @form para renderizar o atributo e voila!

Exemplo completo:

    #{task.name}         

O artigo completo que me ajudou está aqui: http://blogs.steeplesoft.com/2009/10/jsf-2-hdatatable-and-ajax-updates/

Eu me deparei com o mesmo problema e percebi que se você colocasse um elemento (por exemplo) ao redor da mesa e fizesse o mesmo, isso funcionaria. No entanto, não sei bem por que é assim. Alguém?

Por alguma razão, o JSF está modificando o id na tag no botão. Se eu escrever este xhtml:

             

Eu recebo este html:

 

Observe que o id no segundo botão é ‘j_idt7: table: 0’ enquanto espero obter ‘j_idt7: table’ como faço no primeiro.

Isso não resolve o problema, mas pode ajudar a encontrar uma solução alternativa.

use este código:

               

Você precisa adicionar prependId = “false” ao seu h: form

Eu tive o mesmo problema.

Uma coisa que “funciona” é adicionar richfaces ao seu projeto e replace o

 h:datatable 

por um

 rich:datatable. 

Que irá gerar o id correto.