JSP não imprime dado obtidos do Banco de Dados

7 respostas
Renatha_Accioly

Boa tarde galera GUJ,

estou enfrentando o seguinte problema, se alguém já passou, agradeceria a ajuda.

É o seguinte:

estou em um projeto que trabalha com Struts II, e tenho uma JSP que requisita uma pesquisa no BD, porém a resposta desta pesquisa nunca é impressa na tela.
Já testei usando código Java dentro do JSP, e consegui ver dentro do JSP que os dados são retornados para a JSP, porém ele não imprime.

No arquivo Java tenho uma List de nome result que é acessada pelo JSP. E como disse, consigo ver o conteúdo de result no JSP, só não consigo imprimir os campos de result na tela.

O problema surgiu após mudarmos o Banco de Dados do projeto para Postgres.

O primeiro código é a versão que era usada antes da mudança e que funcionava.

<font size="2">Total de Linhas: <s:property value="getTotalLinhas()"/></font>
		<div id="divRelatorio" style="width: 100%; height: 350px; overflow: auto">
			<table cellpadding="0" cellspacing="0" border="0" style="background-color: #104E8B;" width="100%">
       			<tr height="5%">
       				<td align="right">
       					<a href="#" onclick="fecharJanela();" alt="Fechar Janela" style="font-family: sans-serif; font-size: small; font-weight: bold; text-decoration: none; color: white;">X</a>&nbsp;
       				</td>
       			</tr>
       			<tr height="95%">
       				<td>
						<div style="background-color: #104E8B; width: 100%; height: 100%; overflow: auto">     	   		
							<table id="tblResult" width="100%"  border="0" cellpadding="2" cellspacing="2" style="font-size:12px; color:#5F5F5F; font-weight:normal; font-family:Arial,Verdana;">		
								<s:iterator value="result" status="count">
								
									<s:if test="#count.index == 0">
										<s:set name="bgColor" value="%{'#104E8B'}"></s:set>
									</s:if>
									<s:else>
										<s:set name="bgColor" value="%{'#D0ECEF'}" />
										<s:if test="#count.odd == true">
											<s:set name="bgColor" value="%{'#E8F9FB'}" />
										</s:if>
									</s:else>
									<s:if test="#count.index == 0">
										<tr bgcolor="${bgColor}" style="color: white"> 
											<s:iterator>
											<td>
												<s:property />
											</td>								
											</s:iterator>
										</tr>									
									</s:if>
									<s:else>
										<tr bgcolor="${bgColor}"> 
											<s:iterator>
											<td>
												<s:property />
											</td>								
											</s:iterator>
										</tr>										
									</s:else>
									
								</s:iterator>
							</table>
						</div>        					
       				</td>
       			</tr> 
			</table>
		</div>

Aqui segue dois que tentei:

<logic:iterate name="result" id="meuBean">  
         <tr>  
         	
         	<td class="texto1"><bean:write name="meuBean" property="id"/></td>                                                      
         	<td class="texto1"><bean:write name="meuBean" property="nome"/></td>                                                      
         </tr>  
    </logic:iterate>
<% List lista = new List("result");;    
		
    					for (Competencia competencia : lista) {  
		
					%>
      		<tr id="row_<s:property value="result.hasNext"/>" bordercolor="Red">  
  				 <td><s:property/>  
                     <%		out.println("Id: " + competencia.getId());  
         					out.println("Nome: " + competencia.getNome());  
         					out.println("---------------");  
   						 }  
    				%>
		      		
      		</td>
      		</tr>

Desde já, agradeço as ajudas oferecidas.
=)

7 Respostas

paulo1911

No projeto soh foi alterado o banco de dados?
A versão do servidor foi modificada ou reinstalada?

Pode ser algo no container ou no navegador, estranho mesmo!

Fallow

Renatha_Accioly

Só o BD mesmo… o servidor continua o mesmo TomCat 6.0.
Engraçado que vejo os resultados quando uso TagLib nas variaveis do Debug, só nao aparece na pagina.

Valeu.

paulo1911

Ja testou em outros navegadores?

Fallow

Renatha_Accioly

Já… ocorre o mesmo no IE, Chrome e Firefox.

paulo1911

Tente usar o <c:out value=""/> para ver se é da tag… caso nao surta efeito, coloque essa diretiva na página jsp

&lt;%@page isELignored="false"&gt;

// e para usar a jstl core adicione essa diretiva, confirme a uri na hora de adicionar a diretiva, é alguma coisa jsp\jstl\core
&lt;%@ taglib uri="java.sun.com\jsp\jstl\core" prefix="c"%&gt;

// usando a tag &lt;c:out&gt;
&lt;strong&gt;&lt;c:out value="${bean.property}"/&gt;&lt;/strong&gt;

fallow

Renatha_Accioly

Não consegui com a adaptação do teu código Paulo.

Porém consegui acessar assim, de uma forma bem grosseira:

No Action

HttpServletRequest request;
request = ServletActionContext.getRequest();
		HttpSession sessao = request.getSession(); 
sessao.setAttribute("linhas", getTotalLinhas());

No JSP

<font size="2">Total de Linhas: ${linhas}</font>

Obrigada pela força Paulo.

kiq095

acho q e e o seguinte ...

vc so ta crinado a variavel pra receber um valor do bean

<td class="texto1"><bean:write name="meuBean" property="id"/>
  // nome do bean e nome da variavel ... acho que nao esta recebendo valor nenhum

tenta colocar = OU - assim

<td class="texto1"><bean:write name="meuBean" property="id"    value="Seu valor aqui  "/>

nao tenho certeza mais pode ser isso !!!

Criado 5 de abril de 2011
Ultima resposta 7 de abr. de 2011
Respostas 7
Participantes 3