Accedi per seguire   
Seguaci 0
jhonsilver

[jsp] Problema Con L'overloading Di Un Metodo

5 messaggi in questa discussione

Ciao a tutti,mi si p presentato questo tipo di problema:

Da una pagina JSP devo prendere un valore che viene restituito da un metodo in una classe Java.

Su questo metodo è stato fatto l'overloading,quindi esistono due metodi con lo stesso nome,l'unica differenza è che uno riceve dei parametri e l'altro no...

vi posto la porzione di codice della classe Attivita:

	
public BigDecimal calcTotOrelavorate(){
	return calcTotOreLavorate(null,null);
}

public BigDecimal calcTotOreLavorate(Date inizio, Date fine) {
	logger.debug("calcTotOreLavorate: getOreGiornaliere() = "
			+ getOreGiornaliere());
	logger.debug("oreGiornaliere = "
			+ (getOreGiornaliere() != null ? getOreGiornaliere().getClass()
					.toString() : "null"));
	logger.debug("inizio="+inizio+" Fine="+fine);
	BigDecimal tot = new BigDecimal(0.0d);
	if (getOreGiornaliere() != null) {
		Iterator it = getOreGiornaliere().iterator();
		while (it.hasNext()) {
			OreGiornaliere ore = (OreGiornaliere) it.next();
			logger.debug("LA DATAAAAAAA:" + ore.getData().toString());
			if ((inizio == null || ore.getData().compareTo(inizio) >= 0)
					&& (fine == null || ore.getData().compareTo(fine) <= 0)) {
				logger.debug("Preso");
				BigDecimal oreOrd = new BigDecimal(
						ore.getOreOrd() != null ? ore.getOreOrd()
								.doubleValue() : 0.0d);
				BigDecimal oreStraord = new BigDecimal(
						ore.getOreStraord() != null ? ore.getOreStraord()
								.doubleValue() : 0.0d);
				BigDecimal oreViaggio = new BigDecimal(
						ore.getOreViaggio() != null ? ore.getOreViaggio()
								.doubleValue() : 0.0d);
				tot = tot.add(oreOrd).add(oreStraord).add(oreViaggio);
			}
		}
	}
	return tot;
}

Come potete ben vedere, quella senza parametri non fa altroc he richiamare l'altra passandogli dei parametri NULL.

Fin qui, mi sembra tutto normale...

Contentissimo degli esiti positivi dei test,vado in JSP e scrivo questa stringa:

<c:set var="oreLavorate"><%= ((Attivita)pageContext.getAttribute("attivita")).calcTotOreLavorate().toString() %></c:set>

il risultato è un errore che mi dice che non posso chiamare quel metodo senza passare dei parametri (eppure se con JUnit faccio dei test, l'esito è positivo)...

se cambio la stringa in questo modo,cioè passandogli dei valori NULL,il problema si risolve:

<c:set var="oreLavorate"><%= ((Attivita)pageContext.getAttribute("attivita")).calcTotOreLavorate(null,null).toString() %></c:set>

Qualcuno sa indicarmi il perchè faccia una cosa del genere?

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

public BigDecimal calcTotOrelavorate(){
	return calcTotOreLavorate(null,null);
}

Hai messo la L di Lavorate minuscola, di conseguenza ti va a chiamare quella con i parametri :up1:

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

<_< ..

...ma come cavolo ho fatto a non accorgermi di niente prima...sono proprio stonato... :)

Grazie Yuri...

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Capita anche ai migliori, anche a me.. :P

:):P

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti
Capita anche ai migliori, anche a me.. ;)

:):P

:P:wub::P;):(;)

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Crea un account o accedi per lasciare un commento

Devi essere un utente registrato per partecipare

Crea un account

Iscriviti per un nuovo account nella nostra community. È facile!


Registra un nuovo account

Accedi

Sei già registrato? Accedi qui.


Accedi Ora
Accedi per seguire   
Seguaci 0