[java]JSP + Bean Clicca QUI per vedere il messaggio nel forum |
0m4r |
mi date una mano qui? |
Paul |
credo che le specifiche JavaBean
si aspettino un getter e un setter
che restituisca e imposti un valore dello stesso tipo
del campo relativo.
Siccome start è int, viene chiamato
il metodo setStart(int).. che non esiste nel tuo bean;
in pratica risolvi aggiungendo:
public void setStart(int s){
this.start=s;
} |
0m4r |
fantastico...funziona!!!!! |
0m4r |
avrei bisogno di una mano anche per questo...grazie
(fate finta che il mio inglese sia comprensibile dai...) |
Juventina |
(si scrive need non nedd) :d |
0m4r |
Originally posted by Juventina
(si scrive need non nedd) :d
Off-Topic: questa non è ignoranza è il porting della dislessia per la digitazione ;PPP |
0m4r |
dai raga, non abbandonatemi cosi! |
Paul |
..se ho capito bene.
Ho semplificato prendendo il valore da una costante invece che da file (ma l'interfacciamento a file non dovrebbe essere un problema).
allora due jsp:
index.jsp
code:
<%@page import="my.mine.*" %>
<%
Counter counter=Counter.getReference();
%>
<html>
<head>
<title>Counter</title>
</head>
<body>
<center><a href="click.jsp">counter<%counter.getValue()%> </a>
</center>
</body>
</html>
click.jsp
code:
<%@page import="my.mine.*" %>
<%
Counter counter=Counter.getReference();
counter.dec();
response.sendRedirect("index.jsp");
%>
e due classi java (in unico file chiamato Counter.java)
code:
package my.mine;
public class Counter {
private final static int INIT_VALUE = 100;
private int count = INIT_VALUE;
private static Counter counter = null;
private Counter() {
new Cleaner(this).start();
}
public static Counter getReference() {
if (counter == null) {
Counter.counter = new Counter();
}
return counter;
}
synchronized public void dec() {
this.count--;
}
synchronized public int getValue() {
return count;
}
synchronized void clean() {
this.count = INIT_VALUE;
}
}
class Cleaner extends Thread {
private final static int TIMEOUT = 1000000; //in millisecondi
Counter counter;
Cleaner(Counter counter) {
this.counter = counter;
}
public void run() {
try {
while (true) {
synchronized (this) {
wait(TIMEOUT);
}
counter.clean();
}
} catch (InterruptedException e) {
}
}
}
note:
Le due classe opportunamente compilate vanno infilate
come al solito sotto WEB-INF/classes.
La classe Counter realizza il pattern Singleton.
Dovrebbe Funzionare(non ho fatto grossi test)
:) |
0m4r |
ti ringrazie della risposta, ti faro sapere entro fine settimana se funziona.
P.S.
anche te hai avuto alcuni problemi collegandoti al sito di java in questi giorni? |
Paul |
Mi sono accorto di un errore di copia e incolla
la riga:
<a href="click.jsp">counter<%counter.getValue()%>
va corretta con:
<a href="click.jsp">counter<%=counter.getValue()%>
senno' il numero che decrementa non si vede.
si ieri java.sun.com non andava, oggi sembra tutto ok |
0m4r |
riguardando meglio il tuo codice mi sono accorto che forse non è proprio quello che cercavo io.
Nel senso che quello di cui necessito è di avere un meccanismo che ogni giorno a mezzanotte resetti il contatore ad un valore che io stabilisco a propri, mentre, se ben ho capito quello che fa la classe che mi hai scritto, tu li ti occupi di decrementare il contatore gestendo la sincronizzazione di questa operazione. Io questo lo faccio gia, quello che mi manca è quanto detto precedentemente...
Dato questo chiarimento, hai suggerimenti? |
Paul |
quello che fa la mia classe e' resettare a un valore predefinito
ogni tot secondi il contatore.
Se hai bisogno che cio' avvenga a mezzanote (o a un orario qualsiasi di ogni giorno), puoi modificare la classe in questo modo:
while (true) {
synchronized (this) {
wait(TIMEOUT);
}
if (isMezzanotte()){
counter.clean();
}
}
il metodo isMezzanotte() ovviamente e' da implementare (deve ritornare true se l'orario corrente è mezzanotte o quello che vuoi tu).
A questo punto il campo TIMEOUT diventa i millisecondo ogni
quando si controllo che l'orario sia mezzanotte...
(non sarebbe carino togliere il wait() o mettere a 0 TIMEOUT, in quanto la CPU sarebbe al 100% o quasi a controllare ogni istante che sia mezzanotte)
ultima nota, probabilmente i synchronized sono inutili dal punto di vista pratico. |
|
|
|