Problemas com select

13 respostas
S

ESTOU APANHANDO BASTANTE COM UM DETALHE BÁSICO:
FIZ ESTE JSP COM UM SELECT, ONDE GOSTARIA QUE QUANDO SELECIONASSE, ENVIASSE O DADO À SERVLET, MAS NADA ACONTECE, POR FAVOR, ME DÊEM UMA MÃO, AGRADECERIA MUITO SE SOLUCIONASSEM.

<form action="mvc" method="POST">
<select name="cod_empresa">
	<c:forEach var="empresa" items="${dao.lista}" varStatus="cod_empresa">
		<option value="${cod_empresa.count}">${empresa.cod_empresa}</option>
	</c:forEach>
</select>
<table>
	<tr>
		<td>Nome:</td>
		<td><input type="text" name="nome" size="40" /></td>

	</tr>

	<tr>
		<td>Endereço:</td>
		<td><input type="text" name="endereco" size="40" /></td>
	</tr>

	<tr>
		<td>Telefone:</td>
		<td><input type="text" name="telefone" /></td>
	</tr>

	<tr>
		<td>E-mail:</td>
		<td><input type="text" name="email" /></td>
	</tr>

	<tr>
		<td>Ramo de atividade:</td>
		<td><input type="text" name="ramodeatividade" /></td>
	</tr>

	<tr>
		<td>Site:</td>
		<td><input type="text" name="site" />
		<td>
	</tr>
	<tr>
		<td>Descrição:</td>
		<td><input type="text" name="descricao" />
		<td>
	</tr>
	<tr>
		<td>Prioridade:</td>
		<td><select name="prioridade">
			<option value="0">0</option>
			<option value="1">1</option>
			<option value="2">2</option>
			<option value="3">3</option>
			<option value="4">4</option>
			<option value="5">5</option>
			<option value="6">6</option>
			<option value="7">7</option>
			<option value="8">8</option>
			<option value="9">9</option>
		</select></td>
		<td>
	</tr>


	<tr>
		<td><input type="hidden" name="business"
			value="AlteraEmpresaLogic" /></td>


	</tr>
	<tr>
		<td>Logo:</td>
		<td><input type="text" name="logo" size="40" />
		<td>
	</tr>
	<tr>
		<td><input type="submit" value="Alterar" /></td>

	</tr>
	<tr>
		<td><input type='button' onClick="location.href='adm.jsp'"
			name="voltar" value="Voltar"></td>
	</tr>
</table>
</form>
</div>
SERVLET
package br.com.lza.visao;

import javax.servlet.RequestDispatcher;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import br.com.lza.dao.EmpresaDAO;
import br.com.lza.modelo.Empresa;

public class AlteraEmpresaLogic implements BusinessLogic {

	public void execute(HttpServletRequest request, HttpServletResponse response)

	throws Exception {

		System.out.println("Executando a lógica e redirecionando...");
		Empresa empresa = new Empresa();
		long cod_empresa = Long.parseLong(request.getParameter("cod_empresa"));
		empresa.setCod_empresa(cod_empresa);

		long prioridade = Long.parseLong(request.getParameter("prioridade"));
		empresa.setPrioridade(prioridade);
		
		empresa.setLogo(request.getParameter("logo"));
		empresa.setNome(request.getParameter("nome").toUpperCase());
		empresa.setEndereco(request.getParameter("endereco").toUpperCase());
		empresa.setTelefone(request.getParameter("telefone"));
		empresa.setEmail(request.getParameter("email").toLowerCase());
		empresa.setRamodeatividade(request.getParameter("ramodeatividade")
				.toUpperCase());
		empresa.setSite(request.getParameter("site").toLowerCase());
		empresa.setDescricao(request.getParameter("descricao").toUpperCase());

		EmpresaDAO dao = new EmpresaDAO();
		dao.altera(empresa);

		RequestDispatcher rd = request
				.getRequestDispatcher("listaempresascriplet.jsp");
		rd.forward(request, response);
		System.out.println("Alterando empresa ..." + empresa.getNome());
	}
}
MÉTODO NO DAO
public void altera(Empresa empresa) {
		String sql = "update empresa set nome=Upper(?), endereco=Upper(?), telefone=?, email=lower(?), ramodeatividade=Upper(?), site=lower(?), descricao=Upper(?), prioridade=?, logo=lower(?) where cod_empresa=?";
		try {
			PreparedStatement stmt = connection.prepareStatement(sql);
			stmt.setLong(1, empresa.getCod_empresa());
			stmt.setString(2, empresa.getNome());
			stmt.setString(3, empresa.getEndereco());
			stmt.setString(4, empresa.getTelefone());
			stmt.setString(5, empresa.getEmail());
			stmt.setString(6, empresa.getRamodeatividade());
			stmt.setString(7, empresa.getSite());
			stmt.setString(8, empresa.getDescricao());
			stmt.setLong(9, empresa.getPrioridade());
			stmt.setString(10, empresa.getLogo());
			stmt.execute();
			stmt.close();
		} catch (SQLException e) {
			throw new RuntimeException(e);
		}
	}

13 Respostas

luxu

sem clicar pra enviar nada antes? só de selecionar já ir pro servlet? se for acho q terá q usar ajax ou javascript…nunca fiz pois uso JSF e lá dá di boa, no JSP vc terá q pesquisar no google…blz?

S

Então, deve ir para a servlet após o preenchimento de todos os dados, após clicar no botão tipo Submit.
Obrigado.

wbdsjunior

com que nome você mapeou a Servlet?

no atributo action do formulario você deve colocar o caminho (url) e no nome da da Servlet mapeado no web.xml ou anotação.

<form action="url/servlet" method="POST">
S

AlteraEmpresaLogic

S

Mas, Junior, até antes funcionava desta maneira com um input type text, mas eu quis incluir um para fazer um teste, mas não tive sucessso.

wbdsjunior

ignore o que eu disse.

você criou um Factory, como na apostila FJ-21 da Caelum, certo?

public class AlteraEmpresaLogic implements BusinessLogic {

relendo seu post vi algo estranho:

no atributo value da opção da lista você deve colocar a chave primaria da tabela que deseja atualizar.

algo como:

<option value="${empresa.cod_empresa}">${empresa.nome}</option>
discorpio

Bom dia a todos.

Afinal de contas, voce quer atualizar (Update) ou selecionar (Select) registros :?: :?: :?:

Pelo que li lá no seu DAO, voce está atualizando (Update), e esta instrução sql apenas envia dados e não retorna nada. Enquanto que no seu post voce diz que está tentando realizar um Select

Ainda assim voce seguiu a dica do nosso amigo Wbdsjunior, quando disse em mapear a Servlet :?:

Isto é feito lá dentro da past WEB-INF onde voce configura o arquivo web.xml, se você não mapeá-la, o sistema não saberá que há servlets na sua aplicação.

S

Exatamente.

está assim a minha web.xml.

<?xml version="1.0" encoding="UTF-8"?>


LuzianiaOnline

index.html
index.htm
index.jsp
default.html
default.htm
default.jsp

<servlet>
	<servlet-name>syp</servlet-name>
	<servlet-class>br.com.lza.visao.ControllerServlet</servlet-class>
</servlet>



<servlet-mapping>
	<servlet-name>syp</servlet-name>
	<url-pattern>/mvc</url-pattern>
</servlet-mapping>

<filter>
	<filter-name>LogFiltro</filter-name>
	<filter-class>br.com.lza.visao.LogFiltro</filter-class>
</filter>
<filter-mapping>
	<filter-name>LogFiltro</filter-name>
	<url-pattern>*.jsp</url-pattern>
</filter-mapping>

<filter>
	<filter-name>FiltroConexao</filter-name>
	<filter-class>br.com.lza.visao.FiltroConexao</filter-class>
</filter>
<filter-mapping>
	<filter-name>FiltroConexao</filter-name>
	<url-pattern>/*</url-pattern>
</filter-mapping>
S

Se estiver errando algo, por favor, me explique.

S

Em relação à retornar, realmente, o DAO apenas faz o update no banco, mas, ao tentar ultilizar o , não parece enviar informações à servlet, tendo em vista que o DAO recebe o CODIGO e altera com base em um código.

wbdsjunior

estão faltando algumas coisas aí. recomendo ler a apostila da Caelum que citei anteriormente.

de qualquer maneira, tente algo como:

<form action="/mvc/syp?logic=AlteraEmpresaLogic" method="POST">
S

Muito obrigado, vou testar, depois entro em contato.

S

Não funcionou, aparece uma página de erro.

Criado 16 de agosto de 2011
Ultima resposta 17 de ago. de 2011
Respostas 13
Participantes 4