Criar tabela dinâmicamente e pegar valor em servlet

6 respostas
V

Pessoal estou com o seguinte problema.
Eu pego um vector de usuário e dependendo do tamanho deste vector eu mostro os dados do usuário e um botão para o administrador do sistema aprovar o usuário ou não.
Só que não estou conseguindo pensar na lógica de pegar o dado do usuário e enviar isso para a servelt, entenderam?

[img]http://i46.tinypic.com/1sh2s6.jpg[/img]

Quando eu apertar autorizar, eu quero pegar o nome do usuário, 'Marcela' por exemplo, e enviar o form que este botão esta para a servlet.

Não estou conseguindo fazer isso, estou há mais de 3 horas pensando nisso.. se alguém puder me ajudar agradeceria muito.

Esse é o meu código :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <%@page import="java.util.*" %>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>Autorizar Uauários</title>
    <link rel="stylesheet" href="style.css" type="text/css" charset="utf-8" />
    
<script type="text/javascript">
function autorizar(){
	document.getElementById("formAutorizar").submit();
	alert("OLA");
}

var aux = "p";
function autoriza(){
	alert("Usuario aprovado");
}

function exclui(){
	alert("Usuario excluido");
}

</script>
</head>

<% Vector<User> vUser = (Vector) request.getSession().getAttribute("vUser");%>

<body>
<%@ include file="superior.jsp"%>

<div id="menuAdm">
	<br/><br/><br/><br/>
	<a href="autorizaUser.html" id="usernovo"> Autorizar novos cadastros </a> <br/>
	<a href="admUser.html" id="userantigo"> Administrar cadastros </a> <br/>
	<a href="admPub.html" id="publicac"> Administrar publicações </a> <br/>
</div>

<% for (int i = 0; i < vUser.size(); i++){ %>
	<div id = "manipularUser">
    <table id="tabela" cellspacing="20"  width="90%" >
		<form id = "formAutorizar" method="post" action="RecebeDados"> 
			<p> Nome : <% out.println(vUser.get(i).getsName()); %></p>
			<p> Email : <% out.println(vUser.get(i).getsEmail()); %></p>
		 	<input type="button" value="Autorizar" id="<%  %>" onclick="autorizar();" />
  			<input type="hidden" value="_<% out.println(vUser.get(i).getsLogin()); %>" name="autorizar"/>
  		</form>
		
    </table>
	</div>
<% } %>

</body>
</html>

Obrigado desde já.

Atenciosamente,
Valter Henrique.

6 Respostas

P

ola

vc tem varios forms com o mesmo id.

existem varias formas de resolver isso… uma delas é bem porca mas vai te dar ideias.

  1. crie links no lugar de botoes para a servlet e adicione o parametro que vc quer. trate o get dessa requisição. Isso vai servir para vc validar toda a logica

  2. Substitua agora os links pelos botoes, como vc quer e crie um form apenas. on botao coloque uma função que receba como parametro o id que vc quer autorizar. Dentro do javascript adicione esse parametro em um hidden e, então, faça o submit. Vc tem que receber este parametro. É uma forma.

Agora, sugiro vc usar jstl ao inves de scriptlets … deixaria o codigo mais fofo :slight_smile:

Uma terceira parte seria vc fazer isso via ajax, que é bem tranquila com JQuery ou mesmo outros frameworks j2ee… :slight_smile:

V
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <%@page import="java.util.*" %>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>Autorizar Uauários</title>
    <link rel="stylesheet" href="style.css" type="text/css" charset="utf-8" />
    
<script type="text/javascript">
function autorizar(){
	document.getElementById("formAutorizar").submit();
}
</script>
</head>

<% Vector<User> vUser = (Vector) request.getSession().getAttribute("vUser");%>

<body>
<%@ include file="superior.jsp"%>

<% if (vUser.isEmpty()){ %>
<div style="margin-top: 5%; text-align: center; font-family:serif">
<img src="Images/logo_2.png" width="400" height="267" alt="logo_2.png"/>
<h1> Não há usuário para autorizar!!!</h1>
</div>
<% }else{ %>
	<form id = "formAutorizar" method="post" action="RecebeDados"> 
		<p> Nome : <input id="1" name="nome" type="hidden" value=<% out.println(vUser.get(0).getsLogin()); %>/> <% out.println(vUser.get(0).getsName()); %></p>
		<p> Email : <% out.println(vUser.get(0).getsEmail()); %></p>
		<input type="button" value="Autorizar" id="autUsuario" onclick="autorizar();" />
  		<input type="hidden" value="Autorizar" name="acao"/>

		<p> Nome : <input id="1" name="nome" type="hidden" value=<% out.println(vUser.get(1).getsLogin()); %>/> <% out.println(vUser.get(1).getsName()); %></p>
		<p> Email : <% out.println(vUser.get(1).getsEmail()); %></p>
		<input type="button" value="Autorizar" id="autUsuario" onclick="autorizar();" />
  		<input type="hidden" value="Autorizar" name="acao"/>


	</form>
	<%} %>
</body>
</html>

Servlet:

public void authorize (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

		// aqui estou pegando o login do usuário, não o nome dele
		String sLoginUser = request.getParameter("nome");
		
		System.out.println(sLoginUser);
		
		Vector<User> vUser = new Vector();

		try {

			DAO objDao = new DAO();

			if (objDao.authorizeUser(sLoginUser)){
				autorizarNovosCadastros(request, response);
			}
			
		} catch (ExceptionTreat e) {
			System.out.println(e.getMessage());
		}

		// caso o cadastro deu certo, o usuário será redirecionado para a
		// index.jsp
		/*
		RequestDispatcher rd = null;
		rd = request.getRequestDispatcher("/autorizaUser.jsp");
		rd.forward(request, response);
		*/

	}
P

e? isso resolveu?

V
peczenyj:
e? isso resolveu?
Então meu velho, esse código acima eh um exemplo que eu fiz para um amigo meu entender o meu problema, sobre a sua sugestão eu entendi como fazer, soh que como vou colocar como parâmetro no javascript?

O meu esta assim :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <%@page import="java.util.*" %>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>Autorizar Uauários</title>
    <link rel="stylesheet" href="style.css" type="text/css" charset="utf-8" />
    
<script type="text/javascript">
function autorizar(){
	document.getElementById("formAutorizar").submit();
	alert("OLA");
}

var aux = "p";
function autoriza(){
	alert("Usuario aprovado");
}

function exclui(){
	alert("Usuario excluido");
}

</script>
</head>

<% Vector<User> vUser = (Vector) request.getSession().getAttribute("vUser");%>

<body>
<%@ include file="superior.jsp"%>

<div id="menuAdm">
	<br/><br/><br/><br/>
	<a href="autorizaUser.html" id="usernovo"> Autorizar novos cadastros </a> <br/>
	<a href="admUser.html" id="userantigo"> Administrar cadastros </a> <br/>
	<a href="admPub.html" id="publicac"> Administrar publicações </a> <br/>
</div>

<% for (int i = 0; i < vUser.size(); i++){ %>
	<div id = "manipularUser">
    <table id="tabela" cellspacing="20"  width="90%" >
	<form id = "formAutorizar" method="post" action="RecebeDados">   
	<p> Nome : <input id="1" name="nome" type="hidden" value=<% out.println(vUser.get(i).getsLogin()); %>/> <% out.println(vUser.get(i).getsName()); %></p>  
    <p> Email : <%=vUser.get(i).getsEmail()%></p>  
    <input type="button" value="Autorizar" id="autUsuario" onclick="autorizar();" />  
    <input type="hidden" value="vUser.get(i).getsLogin()" name="login" />  
    </form>  
    </table>
	</div>
<%}%>

</body>
</html>
M

Bom dia pessoal,

Eu gero uma tabela dinamicamente, que irá receber os meus dados que vieram do banco de dados:

<th scope="col" abbr="Id">N&uacute;mero Linha</th> 
                    <th scope="col" abbr="Desc_Linha">Descri&ccedil;&atilde;o da Linha</th> 
                    <th scope="col" abbr="Edit">Editar</th> 
                    <th scope="col" abbr="Delit">Deletar</th>
                    <th scope="col" abbr="id" class="ocultaColuna">ID</th>
                    
                </tr> 
            </thead> 
      <c:forEach var="linha" items="${sessionScope['colecaoLinhas']}">
            
            <tbody> 
                <tr>
                    <td>
                    [b]<input type="text" size="3" name="numeroLinha" value="${linha.numeroLinha}">
                    </input>[/b]
                    </td> 
                    <td>
                    [b]<input type="text" size="60" name="nomeLinha" value="${linha.nomeLinha}">
                    </input>[/b]
                    </td>
                    <td>
                    <form  name="edit_linha" action="ManutencaoLinha" method="post">
                    <input type="hidden" name="identificador" value="4"/>
                    <input type="image" src="images/Geral/edit.png" value="submit"/>
                    </form> 
                    </td>
                    <td><input type="image" src="images/Geral/delete.png" value="submit"/></td> 
                    <td class="ocultaColuna"><input type="hidden" name="ident" size="60" value="${linha.id}"/></td>
                </tr>
               </tbody> 
            
       </c:forEach>                    
            
	</table>

A partir dessa tabela eu tenho a opção de (editar ou deletar) quando eu escolho a opçao de editar no meu servlet eu preciso capturar o valor dos inputs, para poder realizar as alterações. POrém ao fazer o request, ele me traz tudo nulo.

Alguém saberia o Porque???

Muito Obrigado!
:smiley:

V

mateus.said:
Bom dia pessoal,

Eu gero uma tabela dinamicamente, que irá receber os meus dados que vieram do banco de dados:

<th scope="col" abbr="Id">N&uacute;mero Linha</th> 
                    <th scope="col" abbr="Desc_Linha">Descri&ccedil;&atilde;o da Linha</th> 
                    <th scope="col" abbr="Edit">Editar</th> 
                    <th scope="col" abbr="Delit">Deletar</th>
                    <th scope="col" abbr="id" class="ocultaColuna">ID</th>
                    
                </tr> 
            </thead> 
      <c:forEach var="linha" items="${sessionScope['colecaoLinhas']}">
            
            <tbody> 
                <tr>
                    <td>
                    [b]<input type="text" size="3" name="numeroLinha" value="${linha.numeroLinha}">
                    </input>[/b]
                    </td> 
                    <td>
                    [b]<input type="text" size="60" name="nomeLinha" value="${linha.nomeLinha}">
                    </input>[/b]
                    </td>
                    <td>
                    <form  name="edit_linha" action="ManutencaoLinha" method="post">
                    <input type="hidden" name="identificador" value="4"/>
                    <input type="image" src="images/Geral/edit.png" value="submit"/>
                    </form> 
                    </td>
                    <td><input type="image" src="images/Geral/delete.png" value="submit"/></td> 
                    <td class="ocultaColuna"><input type="hidden" name="ident" size="60" value="${linha.id}"/></td>
                </tr>
               </tbody> 
            
       </c:forEach>                    
            
	</table>

A partir dessa tabela eu tenho a opção de (editar ou deletar) quando eu escolho a opçao de editar no meu servlet eu preciso capturar o valor dos inputs, para poder realizar as alterações. POrém ao fazer o request, ele me traz tudo nulo.

Alguém saberia o Porque???

Muito Obrigado!
:smiley:

Cara, eu colocaria as variáveis que pego na minha servlet dentro do mesmo form que quero enviar, ai no caso estou vendo que as variaveis que estão em negrito seriam as que você quer pegar na servlet, certo?
Tente colocar elas dentro do form que você vai enviar para a sua servlet, entendeu?

Post aqui o resultado depois, tudo bem?

Abraços.

Criado 4 de junho de 2010
Ultima resposta 5 de nov. de 2010
Respostas 6
Participantes 3