Dúvida JSTL

10 respostas
X

Pessoal, boa noite.

Estou fazendo uma aplicação simples, onde vários usuarios podem ter sua conta e mandar arquivos pra ela.
Estou montando uma pagina em JSP para listar os documentos já enviados.

na página report.jsp

<%
                                        User usr = (User) request.getSession().getAttribute("UserObj");
                                        request.setAttribute("Lista", file.getFilesList(usr.getId()));
                            %>

                        </tr>
                        <c:forEach items="${Lista}" var="files">
                            <tr>
                                <td>${files.id}</td>
                                <td>${files.name}</td>
                            </tr>
                        </c:forEach>

Tem como melhorar isso? acho meio estranho setar o atributo Lista e logo abaixo pegar seus valores… tem como fazer de forma que não precise do scriptlet?

Att, Obrigado!

10 Respostas

T

Crie uma servlet e coloque o trecho nela.

User usr = (User) request.getSession().getAttribute("UserObj");  
request.setAttribute("Lista", file.getFilesList(usr.getId()));  
//redireciona

Não esqueça de

MVC:
http://www.guj.com.br/java/91176-arquitetura-mvc
http://www.guj.com.br/java/1241-padrao-mvc
http://www.guj.com.br/java/129277-perguntas-sobre-mvc-desktop-existe-solucao–mvpmvc-webobserver-e-exceptions/15
Aproveite e pesquise mais sobre o assunto.

luxu

Use JSF ao invés de JSP, muuito mais elegante e funcional do que JSP e após isso, ler as dicas do amigo acima…

S

Estou com dúvida em relação à um select, parece que listo os dados, mas não consigo envià-los à servlet:
Este é o meu JSP, estou usando core lib c:

&lt;%@ page language="java" contentType="text/html; charset=ISO-8859-1"
	pageEncoding="ISO-8859-1"%&gt;
&lt;!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"&gt;
&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"&gt;
&lt;title&gt;Luziânia OnLine - Sistema de informação Comercial&lt;/title&gt;
&lt;%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%&gt;
&lt;jsp:useBean id="dao" class="br.com.lza.dao.EmpresaDAO" /&gt;
&lt;link type="text/css" rel="stylesheet" href="estilo.css" /&gt;
&lt;/head&gt;

&lt;body&gt;


&lt;div id="geral"&gt;
&lt;div id="escopo"&gt;
&lt;div id="cabecalho"&gt;
&lt;h3&gt;Luziânia Online, a sua procura termina aqui&lt;/h3&gt;
<p>Digite o código da antiga empresa seguida dos novos dados da
empresa :</p>
&lt;/div&gt;


&lt;div id="tipopag"&gt;
&lt;h2&gt;Área Administrativa&lt;/h2&gt;
&lt;/div&gt;


&lt;div id="centro"&gt;
&lt;form action="mvc" method="POST"&gt;&lt;select name="cod_empresa"&gt;
	&lt;c:forEach var="empresa" items="${dao.lista}" varStatus="cod_empresa"&gt;
		&lt;option value="cod_empresa"&gt;${empresa.cod_empresa}&lt;/option&gt;
	&lt;/c:forEach&gt;
&lt;/select&gt;
&lt;table&gt;


	&lt;tr&gt;
		&lt;td&gt;Nome:&lt;/td&gt;
		&lt;td&gt;&lt;input type="text" name="nome" size="40" /&gt;&lt;/td&gt;

	&lt;/tr&gt;

	&lt;tr&gt;
		&lt;td&gt;Endereço:&lt;/td&gt;
		&lt;td&gt;&lt;input type="text" name="endereco" size="40" /&gt;&lt;/td&gt;
	&lt;/tr&gt;

	&lt;tr&gt;
		&lt;td&gt;Telefone:&lt;/td&gt;
		&lt;td&gt;&lt;input type="text" name="telefone" /&gt;&lt;/td&gt;
	&lt;/tr&gt;

	&lt;tr&gt;
		&lt;td&gt;E-mail:&lt;/td&gt;
		&lt;td&gt;&lt;input type="text" name="email" /&gt;&lt;/td&gt;
	&lt;/tr&gt;

	&lt;tr&gt;
		&lt;td&gt;Ramo de atividade:&lt;/td&gt;
		&lt;td&gt;&lt;input type="text" name="ramodeatividade" /&gt;&lt;/td&gt;
	&lt;/tr&gt;

	&lt;tr&gt;
		&lt;td&gt;Site:&lt;/td&gt;
		&lt;td&gt;&lt;input type="text" name="site" /&gt;
		&lt;td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt;Descrição:&lt;/td&gt;
		&lt;td&gt;&lt;input type="text" name="descricao" /&gt;
		&lt;td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt;&lt;input type="hidden" name="business"
			value="AlteraEmpresaLogic" /&gt;&lt;/td&gt;

	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt;&lt;input type="submit" value="Alterar" /&gt;&lt;/td&gt;

	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt;&lt;input type='button' onClick="location.href='adm.jsp'"
			name="voltar" value="Voltar"&gt;&lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;
&lt;/form&gt;
&lt;/div&gt;

&lt;div id="rodape"&gt;
<p>Todos os direitos reservados</p>
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/body&gt;
&lt;/html&gt;
HTTP Status 500 -

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: A lógica de negócios causou uma exceção
	br.com.lza.visao.ControllerServlet.service(ControllerServlet.java:25)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
	br.com.lza.visao.FiltroConexao.doFilter(FiltroConexao.java:30)
root cause

java.lang.NumberFormatException: For input string: "cod_empresa"
	java.lang.NumberFormatException.forInputString(Unknown Source)
	java.lang.Long.parseLong(Unknown Source)
	java.lang.Long.parseLong(Unknown Source)
	br.com.lza.visao.AlteraEmpresaLogic.execute(AlteraEmpresaLogic.java:18)
	br.com.lza.visao.ControllerServlet.service(ControllerServlet.java:23)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
	br.com.lza.visao.FiltroConexao.doFilter(FiltroConexao.java:30)
note The full stack trace of the root cause is available in the Apache Tomcat/6.0.32 logs.
F
smnj:
Estou com dúvida em relação à um select, parece que listo os dados, mas não consigo envià-los à servlet: Este é o meu JSP, estou usando core lib c:
&lt;%@ page language="java" contentType="text/html; charset=ISO-8859-1"
	pageEncoding="ISO-8859-1"%&gt;
&lt;!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"&gt;
&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"&gt;
&lt;title&gt;Luziânia OnLine - Sistema de informação Comercial&lt;/title&gt;
&lt;%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%&gt;
&lt;jsp:useBean id="dao" class="br.com.lza.dao.EmpresaDAO" /&gt;
&lt;link type="text/css" rel="stylesheet" href="estilo.css" /&gt;
&lt;/head&gt;

&lt;body&gt;


&lt;div id="geral"&gt;
&lt;div id="escopo"&gt;
&lt;div id="cabecalho"&gt;
&lt;h3&gt;Luziânia Online, a sua procura termina aqui&lt;/h3&gt;
<p>Digite o código da antiga empresa seguida dos novos dados da
empresa :</p>
&lt;/div&gt;


&lt;div id="tipopag"&gt;
&lt;h2&gt;Área Administrativa&lt;/h2&gt;
&lt;/div&gt;


&lt;div id="centro"&gt;
&lt;form action="mvc" method="POST"&gt;&lt;select name="cod_empresa"&gt;
	&lt;c:forEach var="empresa" items="${dao.lista}" varStatus="cod_empresa"&gt;
		&lt;option value="cod_empresa"&gt;${empresa.cod_empresa}&lt;/option&gt;
	&lt;/c:forEach&gt;
&lt;/select&gt;
&lt;table&gt;


	&lt;tr&gt;
		&lt;td&gt;Nome:&lt;/td&gt;
		&lt;td&gt;&lt;input type="text" name="nome" size="40" /&gt;&lt;/td&gt;

	&lt;/tr&gt;

	&lt;tr&gt;
		&lt;td&gt;Endereço:&lt;/td&gt;
		&lt;td&gt;&lt;input type="text" name="endereco" size="40" /&gt;&lt;/td&gt;
	&lt;/tr&gt;

	&lt;tr&gt;
		&lt;td&gt;Telefone:&lt;/td&gt;
		&lt;td&gt;&lt;input type="text" name="telefone" /&gt;&lt;/td&gt;
	&lt;/tr&gt;

	&lt;tr&gt;
		&lt;td&gt;E-mail:&lt;/td&gt;
		&lt;td&gt;&lt;input type="text" name="email" /&gt;&lt;/td&gt;
	&lt;/tr&gt;

	&lt;tr&gt;
		&lt;td&gt;Ramo de atividade:&lt;/td&gt;
		&lt;td&gt;&lt;input type="text" name="ramodeatividade" /&gt;&lt;/td&gt;
	&lt;/tr&gt;

	&lt;tr&gt;
		&lt;td&gt;Site:&lt;/td&gt;
		&lt;td&gt;&lt;input type="text" name="site" /&gt;
		&lt;td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt;Descrição:&lt;/td&gt;
		&lt;td&gt;&lt;input type="text" name="descricao" /&gt;
		&lt;td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt;&lt;input type="hidden" name="business"
			value="AlteraEmpresaLogic" /&gt;&lt;/td&gt;

	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt;&lt;input type="submit" value="Alterar" /&gt;&lt;/td&gt;

	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt;&lt;input type='button' onClick="location.href='adm.jsp'"
			name="voltar" value="Voltar"&gt;&lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;
&lt;/form&gt;
&lt;/div&gt;

&lt;div id="rodape"&gt;
<p>Todos os direitos reservados</p>
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/body&gt;
&lt;/html&gt;
HTTP Status 500 -

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: A lógica de negócios causou uma exceção
	br.com.lza.visao.ControllerServlet.service(ControllerServlet.java:25)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
	br.com.lza.visao.FiltroConexao.doFilter(FiltroConexao.java:30)
root cause

java.lang.NumberFormatException: For input string: "cod_empresa"
	java.lang.NumberFormatException.forInputString(Unknown Source)
	java.lang.Long.parseLong(Unknown Source)
	java.lang.Long.parseLong(Unknown Source)
	br.com.lza.visao.AlteraEmpresaLogic.execute(AlteraEmpresaLogic.java:18)
	br.com.lza.visao.ControllerServlet.service(ControllerServlet.java:23)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
	br.com.lza.visao.FiltroConexao.doFilter(FiltroConexao.java:30)
note The full stack trace of the root cause is available in the Apache Tomcat/6.0.32 logs.

No trecho abaixo você está mandando para uma string o texto "cod_empresa" e eu acho q não era isso q vc deveria fazer heheh

&lt;form action="mvc" method="POST"&gt;&lt;select name="cod_empresa"&gt;  
    &lt;c:forEach var="empresa" items="${dao.lista}" varStatus="cod_empresa"&gt;  
        &lt;option value="cod_empresa"&gt;${empresa.cod_empresa}&lt;/option&gt;  
    &lt;/c:forEach&gt;  
&lt;/select&gt;

tente isto

&lt;form action="mvc" method="POST"&gt;&lt;select name="cod_empresa"&gt;  
    &lt;c:forEach var="empresa" items="${dao.lista}" varStatus="cod_empresa"&gt;  
        &lt;option value="${cod_empresa.count}"&gt;${empresa.cod_empresa}&lt;/option&gt;  
    &lt;/c:forEach&gt;  
&lt;/select&gt;
S

Felipe, apesar de agora não aparecer mensagem de erro, agora parece não enviar o dado, apenas envia a página, mas os dados continuam o mesmo, tendo em vista que a página deve fazer acesso à um método de update a partir de uma classe DAO, por gentileza, me dá uma ajuda.

F

como está o seu servlet?

vc tem um servlet com o nome mvc?

S

Uma servlet controladora, que envia as requisições para outras servlets.

public class ControllerServlet extends HttpServlet {

/**

*

*/

private static final long serialVersionUID = 1L;
protected void service(HttpServletRequest request,
		HttpServletResponse response) throws ServletException, IOException {
	String business = request.getParameter("business");
	String className = "br.com.lza.visao." + business;
	try {
		Class clazz = Class.forName(className);
		BusinessLogic businessLogic = (BusinessLogic) clazz.newInstance();
		businessLogic.execute(request, response);
	} catch (Exception e) {
		throw new ServletException(
				"A lógica de negócios causou uma exceção", e);
	}

}

}

F

smnj:
Uma servlet controladora, que envia as requisições para outras servlets.

public class ControllerServlet extends HttpServlet {

/**

*

*/

private static final long serialVersionUID = 1L;
protected void service(HttpServletRequest request,
		HttpServletResponse response) throws ServletException, IOException {
	String business = request.getParameter("business");
	String className = "br.com.lza.visao." + business;
	try {
		Class clazz = Class.forName(className);
		BusinessLogic businessLogic = (BusinessLogic) clazz.newInstance();
		businessLogic.execute(request, response);
	} catch (Exception e) {
		throw new ServletException(
				"A lógica de negócios causou uma exceção", e);
	}

}

}

para funcionar do jeito q está ai o nome da sua class servlet deveria ser “mvc”

S

o.k. vou testar, mais tarde entro em contato, muito obrigado.
Por gentileza ,se houver com entrar em contato por e-mail, agradeceria, desta maneira posso tentar enviar o meu projeto, e poderá analisar melhor.

S

E lá vamos nós!!!..
e… esta não é!

Criado 15 de agosto de 2011
Ultima resposta 17 de ago. de 2011
Respostas 10
Participantes 5