Unable to compile class for JSP

11 respostas
F

Ao tentar abrir a pagina apresenta o seguinte erro:

[b]
javax.servlet.ServletException: ServletException in ‘/layouts/classicLayout.jsp’: ServletException in ‘/tiles/metricas/MetricaDadosCon.jsp’: Unable to compile class for JSP

An error occurred at line: -1 in the jsp file: null

Generated servlet error:

[javac] Compiling 1 source file

[javac] C:\jboss\server\default\work\MainEngine\localhost\GarantiaReceita\tiles\metricas\MetricaDadosCon_jsp.java:113: cannot resolve symbol

[javac] symbol  : method getLimiteCor ()

[javac] location: class com.claro.ra.lib.vo.MetricaVo

[javac] ((MetricaVo)metricaVo).getLimiteCor();

[javac] ^

[javac] 1 error

[/b]

Segue o codigo que está com problema:

<table border="1">
	<tr>
		<td>Métrica</td>
		<td>Periodo</td>
		<td>Valor</td>
	</tr>
	<logic:iterate id="metricaVo" name="metricaConData">
	 <tr bgcolor="#CCCCCC">
      <td align="right"><bean:write name="metricaVo" property="metrica"/></td>
      <td align="right"><bean:write name="metricaVo" property="periodo"/></td>
      <td align="right">
      <font color= <%((MetricaVo)metricaVo).getLimiteCor(); %> /&gt
         	&lt;bean:write name="metricaVo" property="metricaValue" format="#,##0.00%"/&gt;
       	</font>
      &lt;/td&gt;
    &lt;/tr&gt;
    &lt;/logic:iterate&gt;
&lt;/table&gt;
&lt;/center&gt;

Isso que eu fiz é correto?

Obrigado,

Fabiano

11 Respostas

luis.soares

Olá Fabiano.
Porque você precisa fazer este cast :

((MetricaVo)metricaVo).getLimiteCor();

?

Não poderia fazer metricaVO.getLimiteCor();

?

O que é esse “getLimiteCor”, é um método ?

Abraço.

matheuscechito

não seria assim:

<font color="<%=metricaVo.getLimiteCor()%>" />

F

Eu estou fazendo o cast porque eu tenho varios VO´s armazenados em uma ArrayList.

luis.soares

Mas quando você usa o bean write aqui :

&lt;td align="right"&gt;&lt;bean:write name="metricaVo" property="metrica"/&gt;&lt;/td&gt;

você não precisa fazer o cast.

Faça sem o cast. Você tentou ?

Abraço.

F

Na verdade meu codigo está assim:

&lt;table border="1"&gt;
	&lt;tr&gt;
		&lt;td&gt;Métrica&lt;/td&gt;
		&lt;td&gt;Periodo&lt;/td&gt;
		&lt;td&gt;Valor&lt;/td&gt;
	&lt;/tr&gt;
	&lt;logic:iterate id="metricaVo" name="metricaConData"&gt;
	 &lt;tr bgcolor="#CCCCCC"&gt;
      &lt;td align="right"&gt;&lt;bean:write name="metricaVo" property="metrica"/&gt;&lt;/td&gt;
      &lt;td align="right"&gt;&lt;bean:write name="metricaVo" property="periodo"/&gt;&lt;/td&gt;
      &lt;td align="right"&gt;
         	&lt;bean:write name="metricaVo" property="metricaValue" format="#,##0.00%"/&gt;
       	</font>
      &lt;/td&gt;
    &lt;/tr&gt;
    &lt;/logic:iterate&gt;
&lt;/table&gt;

que o Layout sai assim:

Metrica | Periodo | Resultado
I1 | 01/02 | 1%
I1 | 02/02 | 8%
I11| 01/02 | 0%
I11| 02/02 | 10%

e preciso que fique assim:

01/02      02/02

I1 | 1% | 8%
I11| 0% | 10%

Já tentei muita coisa e até agora não consegui.

Como posso fazer para sair esse Layout?

Obrigado,

Fabiano.

matheuscechito

FabianoPatricio,

Acho que terá q fazer duas iterações…uma para as métricas e outra para os períodos…

aí, acredito que vc consiga o q quer

tenta ae,
abraço

F

Já tentei tambem e não consegui.

Olha como estou fazendo no Bean:

ArrayList retorno = new ArrayList();
		MetricaVo[] metricaRetorno = null;
		TreeMap metricaMap = new TreeMap();
		SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
		
		Date tempDate = dataIni;
		GregorianCalendar cal = new GregorianCalendar();

		for (int i=0; i&lt;metricaList.length;i++)
		{

		
			DaoFactory df = DaoFactory.getDaoFactory(DaoFactory.DATASOURCE);
		
			try{
				//criando daos de acesso
				IdDadosDao idDadosdao = df.getIdDadosDao(new String[]{});
				IdMetricasDao idMetricasDao = df.getIdMetricasDao(new String[]{});
			
				String[] ids = null;
				//pesquisa os IDs da métrica
				 ids = idMetricasDao.getMetricaIds(metricaList[i]);
				 
				 System.out.println(metricaList[i]);//retirar essa linha
			
			
				 //pesquisa os valores dos IDs em um período
				 IndicadorVo[] idLista = 
					 idDadosdao.getIdMetricaData(dataIni, dataFin, ids);
			
				 for (int y = 0; y &gt;&lt idLista.length; y++) {
					 String strDate = idLista[y].getPeriodo();
					 cal.set(Integer.parseInt(strDate.substring(0, 4)), 
							 	Integer.parseInt(strDate.substring(4, 6)) - 1, 
								Integer.parseInt(strDate.substring(6, 8)));
					MetricaVo vo = (MetricaVo)metricaMap.get(cal.getTime());
					if (vo == null){
						 vo = idMetricasDao.getMetrica(metricaList[i]);
					}

					 double tempValor = 0;
					 if (Double.isNaN(vo.getIdValor(idLista[y].getId()))){
						 tempValor = idLista[y].getValor();
					 } else {
						 tempValor = idLista[y].getValor() + vo.getIdValor(idLista[y].getId());
					 }
					 vo.setPeriodo(formatter.format(cal.getTime()));
					 vo.putIdValor(idLista[y].getId(), tempValor);
					 metricaMap.put(cal.getTime(), vo);
					 
				 }
				 
				 Iterator it = metricaMap.entrySet().iterator();
				 while (it.hasNext()){
					 Entry entry = (Entry)it.next();
					 retorno.add((MetricaVo)entry.getValue());
				 }
				 
				 metricaMap = new TreeMap();
			
			} catch (DaoException daoEx){
				throw new TechnicalException("Ocorreu uma exceção ao acessar o banco de dados: ", daoEx);
			}
			
		}	

		return (retorno);

Ele armazena em um ArrayList todos os objetos e os atributos dos meu objetos são:

private String metrica;

private String periodo;

private String descricao;

private String grupo;

private String periodicidade;

private String formula;

private float limiteVerde;

private float limiteAmarelo;

private HashMap idValores;

Na hora que vai para a pagina JSP e na iteração eu peço para aparecer os atributos metrica e periodo é aonde repete os valores.

O que eu preciso é que não apareça com o mesmo nome.

luis.soares

Fabiano, acredito que você precisará ter alguma interações, a princípio 3. E a cada uma delas, você vai aplicando o filtro. Por exemplo, você vai ter uma lista com todos os períodos. A cada período que você escrever no html, você vai filtrar em uma outra lista ou no banco (prefira ter um buffer disso em uma lista), todas as métricas para aquela data, e então fazer uma interação nesta lista com as métricas, e também escrever no html. Depois aplica o filtro ainda dentro da interação da lista de data, em uma lista com os valores.
A lógica seria esta.
Minha opinião : Crie um novo tópico aqui no GUJ, com este assunto : “Preencher consulta ordenada” ou “Ajuda para preencher consulta com agrupamento”, algo do tipo.
Este tópico já está grande e o assunto está fora do escopo.

Abraço !

matheuscechito

só complementando…

concordo com o luis.soares na parte das iterações e para resolver o problema do layout, faça umexemplo do que vc quer em HTML simples que facilitará sua vida.

abraço

F

Estou abrindo um novo tópico com o nome:

Ajuda para preencher consulta com agrupamento

Obrigado.

Fabiano.

F

Acabei de criar um topico:

Ajuda para preencher consulta com agrupamento

Valeu,

Fabiano.

Criado 13 de novembro de 2006
Ultima resposta 14 de nov. de 2006
Respostas 11
Participantes 3