JSF Problema com getRowData

1 resposta
leandro.ferreira

Pessoal,

Já procurei exemplos prontos, códigos mastigados, mas estou tendo o mesmo problema.

Estou tentando entender pq qdo clico num botao editar ou deletar na minha linhda do dataTable ele sempre pega o primeiro item da tabela.

Fiz um crud numa pagina só pra estudar jsf com jpa e ajax, porém não consigo entender pq qdo chamo esses dois metodos(alterar e delete) ele nao pega a linha correta.

Se alguém puder ajudar ficarei muito grato.

Minha pagina JSP

//antes desta tabela tem dois campos q servem para adicionar e editar e pesquisar

<rich:dataTable border="1" value="#{usuarioBean.all}"
				var="currentUser" id="table">
				<h:column id="column1">
					<h:outputText value="#{currentUser.idUsuario}"></h:outputText>
					<f:facet name="header">
						<h:outputText value="id"></h:outputText>
					</f:facet>
				</h:column>
				<h:column id="column2">
					<h:outputText value="#{currentUser.nmUsuario}"></h:outputText>
					<f:facet name="header">
						<h:outputText value="name"></h:outputText>
					</f:facet>
				</h:column>
				<h:column>
					<f:facet name="header">
						<h:outputText value="Delete" />
					</f:facet>
					<h:commandButton action="#{usuarioBean.delete}" value="Delete"
						onclick="javascript:return(confirm('Delete this User ?'))" />
				</h:column>
				<h:column>
					<f:facet name="header">
						<h:outputText value="Edit" />
					</f:facet>
					<h:commandButton action="#{usuarioBean.alterar}" value="Edit" />
					<h:commandLink action="#{usuarioBean.alterar}" id="editarLink">
						<h:outputText id="editarLinkText" value="editar" />
						<f:param id="id" name="id"
							value="#{currentUser.idUsuario}" />
					</h:commandLink>
				</h:column>
			</rich:dataTable>

Meu ManagedBean

public String alterar() {
		TabUsuario user = (TabUsuario) this.getModel().getRowData();
		name = user.getNmUsuario();
		id = user.getIdUsuario();

		return "success";
	}

public String delete() {
		UsuarioDAO dao = getUsuarioDAO();
		// deveria pegar a linha q eu cliquei mas pega sempre a linha 0(primeira linha)
		TabUsuario usuario = (TabUsuario) model.getRowData();
		dao.removeUser(usuario);

		return "success";//retorna sempre pra mesma pagina
	}

1 Resposta

leandro.ferreira

Ae galera, burrice minha eh obvio, eu botei um atributo all e ta querendo pegar o outro, ai nao dá né.

só ajustei meu Bean para transformar o atributo all em um DataModel.

Foi mal incomodar vcs com essa tolice.

Criado 9 de julho de 2009
Ultima resposta 9 de jul. de 2009
Respostas 1
Participantes 1