Olá pessoal, sou novo no forum, estou começando a estudar Java
tive um problema, se alguem puder me ajudar:
Estou desenvolvendo uma aplicação para web em java usando struts e tive um problema para exibir meus dados usando JSTL e Spression Language
pagina de listagem:
1. <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
2. <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
3.
4. <html>
5. <head>
6. <title>teste</title>
7. </head>
8. <body>
9.
10. <c:forEach var="lista" items="${listaClientes}">
11. ${lista.nome}<br />
12. </c:forEach>
13.
14. </body>
15. </html>
struts-config.xml
<action path="/teste" type="com.struts.action.ClientesAction" scope="request" >
<forward name="OK" path="/WEB-INF/web/clientes/Cadastro.jsp" />
</action>
ClientesAction.java
public ActionForward execute(ActionMapping map, ActionForm form, HttpServletRequest request,HttpServletResponse response) throws Exception {
List list = new ArrayList();
Clientes c = new Clientes();
c.setNome("rafael");
list.add(c);
c = new Clientes();
c.setNome("abc");
list.add(c);
request.setAttribute("listaClientes", list );
return map.findForward("OK");
}
Ele não da nenhum erro na página, mais não execura o for para escrever minha lista, ele não interpleta o spression language, ele escreve na página ${lista.nome}, eu fiz uns testes com jstl sem spression language só para testar e esta funcionando, estou achando que pode ser algum jar que esteja faltando ou coisa do tipo
Agradeço des de já
Você colocou o arquivo jstl.jar dentro da pasta WEb-INF/lib do seu pacote?
A versão do seu web.xml é 2.4?
Sim, coloquei os jars jstl.jar e standard.jar em WEb-INF/lib
A versão do meu web.xml é a 1.0
O projeto foi desenvolvido a partir do struts-blank 1.3.8
Há algum problema de compatibilidade será??
Estou usando o tomcat 5.0, java 5, struts 1 com todos jars
hubner
Maio 1, 2007, 9:46pm
#5
cara, estou tendo um problema idêntico ao seu!! veja:
No JSP está assim:
<c:forEach var="livro" items="${livros}" >
<p>${livro.getTitulo}/> </p>
</c:forEach>
na minha action que popula o objeto livros está assim:
[code]
public class Busca extends BaseAction {
public String execute() throws Exception {
String titulo = input.getStringValue("texto");
Connection conn = (Connection) input.getValue("connection");
AcessaBanco ab = new AcessaBanco();
List<Book> livros = ab.procuraLivros(titulo,conn);
output.setValue("livros",livros);
return SUCCESS;
}
} [/code]
e a classe que acessa o Banco está assim:
public class AcessaBanco {
public AcessaBanco() {
}
public List procuraLivros(String titulo, Connection conn) throws Exception {
Statement stmt = null;
ResultSet rset = null;
try {
String sb = null;
sb = "select * from produto where ";
sb = sb + " descricao starting with 'AMOR'" ;
sb = sb + " order by descricao";
stmt = conn.createStatement();
rset = stmt.executeQuery(sb);
List books = new ArrayList();
while (rset.next()) {
Book book = new Book();
book.setId(rset.getInt("cp_produto"));
book.setTitulo(rset.getString("descricao"));
book.setAutor(rset.getString("desc_res"));
book.setPreco(rset.getDouble("preco_venda"));
book.setPromocao(rset.getDouble("preco_custo"));
books.add(book);
}
return books;
} finally {
if (rset != null) try { rset.close(); } catch(Exception e) { }
if (stmt != null) try { stmt.close(); } catch(Exception e) { }
}
}
}
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4">
<servlet>
<servlet-name>Controller</servlet-name>
<servlet-class>org.mentawai.core.Controller</servlet-class>
<init-param>
<param-name>applicationManager</param-name>
<param-value>bookshop.ApplicationManager</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Controller</servlet-name>
<url-pattern>*.mtw</url-pattern>
</servlet-mapping>
<filter>
<filter-name>DebugFilter</filter-name>
<filter-class>
org.mentawai.util.DebugServletFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>DebugFilter</filter-name>
<url-pattern>*.jsp</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
<dispatcher>INCLUDE</dispatcher>
<dispatcher>ERROR</dispatcher>
</filter-mapping>
<session-config>
<session-timeout>
5
</session-timeout>
</session-config>
<error-page>
<error-code>403</error-code>
<location>/erros/403.html</location>
</error-page>
<error-page>
<error-code>404</error-code>
<location>/erros/404.html</location>
</error-page>
<welcome-file-list>
<welcome-file>
index.jsp
</welcome-file>
</welcome-file-list>
<!--
<resource-ref>
<description>Firebird Datasource </description>
<res-ref-name>jdbc/firebird</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref> -->
<taglib>
<taglib-uri>http://java.sun.com/jsp/jstl/core</taglib-uri>
<taglib-location>/WEB-INF/c.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>http://java.sun.com/jsp/jstl/fmt</taglib-uri>
<taglib-location>/WEB-INF/fmt.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>http://java.sun.com/jsp/jstl/sql</taglib-uri>
<taglib-location>/WEB-INF/sql.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>http://java.sun.com/jsp/jstl/x</taglib-uri>
<taglib-location>/WEB-INF/x.tld</taglib-location>
</taglib>
<jsp-config>
<jsp-property-group>
<url-pattern>*.jsp</url-pattern>
<el-ignored>false</el-ignored>
</jsp-property-group>
</jsp-config>
</web-app>
e quando a action acima é acionada ele me dá o erro 404. Seu eu não popular o objeto livros ele não dá o erro 404(Página não encontrada)
Estou usando:
Tomcat 5.5.17 embutido no Netbeans 5.5
Java 5
os jar da JSTL (standard.jar e jstl.jar) estão em /WEB-INF/lib
alguem tem alguma idéia???
Acho que você nem sabia o que era Java quando o web.xml estava na versão 1.0, mostre o seu web.xml aí.
[quote=hubner]cara, estou tendo um problema idêntico ao seu!! veja:
No JSP está assim:
<c:forEach var="livro" items="${livros}" >
<p>${livro.getTitulo}/> </p>
</c:forEach>
na minha action que popula o objeto livros está assim:
[code]
Tomcat 5.5.17 embutido no Netbeans 5.5
Java 5
os jar da JSTL (standard.jar e jstl.jar) estão em /WEB-INF/lib
alguem tem alguma idéia???
[/quote]
Nâo é mais necessário declarar as taglibs que você está usando quando o seu web.xml for da versão 2.4 ou superior.
Acho que você nem sabia o que era Java quando o web.xml estava na versão 1.0, mostre o seu web.xml aí.[/quote]
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<display-name>Struts Blank Application</display-name>
<!-- Standard Action Servlet Configuration -->
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
<!-- Standard Action Servlet Mapping -->
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<!-- The Usual Welcome File List -->
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
Amigos,
Ao invés de usar: ${lista.nome}, tentem usar:
<c:out value="${lista.nome}">
se não exibir nada provavelmente não está sendo enviado nada pra página, faz um teste antes do foreach, tente com um present pra verificar se sua página recebeu a lista e se recebeu, dentro do foreach coloque alguma funçãozinha pra imprimir a data ou qualquer outro valor só para você ter noção de quantos elementos tem na lista, mas acredito que o c:out resolva o problema.
[]'s
Aiiii pessoal, valeu pela ajuda de todos mais eu resolvi o problema
e também descobri que se escreve “Expression language” rsrs
eu achei o msm problema em outro forum http://www.guj.com.br/posts/list/27092.java
No meu caso foi só incluir a tag <%@ page isELIgnored="false" %>
que habilitou a interpletação de Expression language na minha página
o problema é ficar colocando essa tag em todas as páginas, se alguem conhecer alguma outra forma de habilitar EL me falem
Valeu…
hubner
Maio 3, 2007, 8:39am
#11
coloca essa tag no seu web.xml se funcionar posta aqui o resultado!
<jsp-config>
<jsp-property-group>
<url-pattern>*.jsp</url-pattern>
<el-ignored>false</el-ignored>
</jsp-property-group>
</jsp-config>
Hübner (ETI)
[quote=hubner]
coloca essa tag no seu web.xml se funcionar posta aqui o resultado!
<jsp-config>
<jsp-property-group>
<url-pattern>*.jsp</url-pattern>
<el-ignored>false</el-ignored>
</jsp-property-group>
</jsp-config>
Hübner (ETI)[/quote]
Valeu msm mais aqui em casa não funcionou
Então… :?
Fiz uma besteira muito grande neh…
a intenção é justamente não usar <c:out> xD, ê pressa viu… desculpa pessoal!
: