PDA

View Full Version : [Applet]Leggere i dati da una textfield


franklyn
17-11-2005, 16:49
Ragazzi... si può far eseguire una applet in un form ?

Spiego il mio problema :

Ho una form :
Matricola
Nome

devo fare una applet che mi controlli che in matricola ci siano solo numeri
e in nome ci siano solo lettere.
EDIT: il mio problema ora è anche un altro, come faccio a controllare che i dati inseriti nelle caselle
di testo sono lettere o numeri ?
Sono riuscito ad acquisire i dati inseriti nelle caselle di testo solo in seguito ad un evento di pulsante premuto come potrei acquisire i dati dalle textfield prima dell'evento di tasto premuto?

Tralasciando che non so come fare la applet... :D
ma una volta fatta... come la faccio eseguire nel form ?
E poi... se il controllo va a buon fine... come faccio a far eseguire una servlet o una jsp ??

sto perdendo la testa :muro::muro:

Grazie
:help:

kingv
17-11-2005, 17:24
la strada corretta è implementare quei controlli in Javascript, non avresti alcuna utilità a eseguire un applet per un compito così banale (e comunque dovresti passare da javascript in ogni caso per accedere agli oggetti della form)

franklyn
17-11-2005, 17:32
la strada corretta è implementare quei controlli in Javascript, non avresti alcuna utilità a eseguire un applet per un compito così banale (e comunque dovresti passare da javascript in ogni caso per accedere agli oggetti della form)
ok... ma purtroppo contro la mia volontà devo farlo con le applet! :muro:

franklyn
17-11-2005, 17:47
e se invece della form facessi direttamente una applet che funge da form...
controlla i campi... dopo di che richiama la servlet o jsp ?

kingv
17-11-2005, 18:51
e se invece della form facessi direttamente una applet che funge da form...
controlla i campi... dopo di che richiama la servlet o jsp ?



questo si puo' fare.
se i controlli che devi fare sono semplici non vale la pena ugualmente ma...se devi fare così... :boh:

cerca qualche esempio su internet poi modificalo, devi gestire solo qualche textfield e qualche bottone ;)

franklyn
17-11-2005, 23:23
questo si puo' fare.
se i controlli che devi fare sono semplici non vale la pena ugualmente ma...se devi fare così... :boh:

cerca qualche esempio su internet poi modificalo, devi gestire solo qualche textfield e qualche bottone ;)

quindi sarebbe + fattibile questo... che le form ?
la applet mi controllerebbe i caratteri... e se è tutt'ok, come fa a mandare in esecuzione una servlet o una jsp ?

devo fare x forza la applet perchè sto facendo un progetto... e la prof. vuole che utilizziamo servlet, jsp e applet
e la applet deve fare il controllo sulle stringhe :muro: :muro:

;)

kingv
18-11-2005, 09:34
quando hai fatto il controllo puoi chiamare getAppletContext().showDocument() passando come argomento l'url della servlet o della jsp che vuoi chiamare.

franklyn
19-11-2005, 23:21
il mio problema ora è anche un altro, come faccio a controllare che i dati inseriti nelle caselle di testo sono lettere o numeri ?
Sono riuscito ad acquisire i dati inseriti nelle caselle di testo solo in seguito ad un evento di pulsante premuto come potrei acquisire i dati dalle textfield prima dell'evento di tasto premuto?
Magari o man mano che scrive consentendogli di scrivere in matricola
solo caratteri da 0 a 9 e in nome e cognome solo lettere da "a" a "z"
o in qualche altro modo...
l'importante che alla pressione del pulsante i dati inseriti nelle textfield abbiano già passato correttamente il controllo.

grazie!

kingv
20-11-2005, 00:58
puoi usare diversi criteri, ad esempio per vedere se la stringa contenuta in un textfield è costituita solo da caratteri numerici puoi usare Integer.parseInt(String), se ti viene ritonata un'eccezione allora la stringa contiene anche caratteri non numerici, oppure puoi scriverti un metodo tipo


public boolean soloNumeri(String s)
{
for (i=0;i<s.length(),i++)
if (!s.charAt(i).isDigit()) return false;
return true;
}


per controllare l'input a ogni lettera inserita devi aggiungere un KeyListener ai due textfield.

franklyn
20-11-2005, 10:19
puoi usare diversi criteri, ad esempio per vedere se la stringa contenuta in un textfield è costituita solo da caratteri numerici puoi usare Integer.parseInt(String), se ti viene ritonata un'eccezione allora la stringa contiene anche caratteri non numerici, oppure puoi scriverti un metodo tipo


public boolean soloNumeri(String s)
{
for (i=0;i<s.length(),i++)
if (!s.charAt(i).isDigit()) return false;
return true;
}


per controllare l'input a ogni lettera inserita devi aggiungere un KeyListener ai due textfield.

Alla fine... ho fatto questo if :
if(matricola.replaceAll("\\d","").equals(matricola))
e controllato se erano solo numeri o solo lettere...
per controllare anche i caratteri tipo / $%£& esiste qualche altro mezzuccio x non fare il controllo char per char ?

kingv
20-11-2005, 16:50
per controllare anche i caratteri tipo / $%£& esiste qualche altro mezzuccio x non fare il controllo char per char ?

guardati il metodo matches della classe String, ti permette di utilizzare le regexp.
tipo:

if(input.matches("\\d+"))
//allora la stringa è composta solo da numeri

franklyn
21-11-2005, 20:18
guardati il metodo matches della classe String, ti permette di utilizzare le regexp.
tipo:

if(input.matches("\\d+"))
//allora la stringa è composta solo da numeri

potresti farmi un esempio ?
Non sono riuscito a capire :muro: :muro:
dico sempre per i caratteri che non siano lettere o numeri.

grazie
;)

kingv
21-11-2005, 20:34
potresti farmi un esempio ?
Non sono riuscito a capire :muro: :muro:
dico sempre per i caratteri che non siano lettere o numeri.

grazie
;)


se ho capito quello che vuoi fare in un textfield che deve contenere solo numeri devi mettere un controllo (su ogni tasto premuto) del tipo:

String input = textfield.getText();
if(input != null && !input.matches("\\d+"))
{
input.replaceAll("\\D", "");
textfield.setText(input);
}

franklyn
21-11-2005, 21:54
se ho capito quello che vuoi fare in un textfield che deve contenere solo numeri devi mettere un controllo (su ogni tasto premuto) del tipo:

String input = textfield.getText();
if(input != null && !input.matches("\\d+"))
{
input.replaceAll("\\D", "");
textfield.setText(input);
}
il controllo non necessariamente lo devo fare su ogni tasto premuto... non dovrei gestire gli eventi della tastiera ?
cmq io dopo la pressione di un bottone mi leggo le stringhe dalle textfield :
matricola : 465456 nome : marco cognome : marco

oltre a verificare che matricola sia solo numeri e nome e cognome solo lettere,
dovrei e vorrei verificare anche che non vi sono caratteri al di fuori di:
1,2,3,4,5,6,7,8,9,0
a,b,c,d,e,f,g,j,kh,i,l,m,n,o,p,q,r,s,t,u,v,w,y,z,x,y

kingv
22-11-2005, 07:45
il controllo non necessariamente lo devo fare su ogni tasto premuto... non dovrei gestire gli eventi della tastiera ?


non ho capito se il controllo lo vuoi fare "in tempo reale" (cioè mentre l'utente digita), oppure quando conferma il login.


oltre a verificare che matricola sia solo numeri e nome e cognome solo lettere,
dovrei e vorrei verificare anche che non vi sono caratteri al di fuori di:
1,2,3,4,5,6,7,8,9,0
a,b,c,d,e,f,g,j,kh,i,l,m,n,o,p,q,r,s,t,u,v,w,y,z,x,y

è la stessa cosa, dire che nel campo ci devono essere solo numeri e lettere equivale a dire che altri caratteri all'infuori di quelli che hai elencato non possono essere usati, ti pare? ;)

franklyn
22-11-2005, 22:30
non ho capito se il controllo lo vuoi fare "in tempo reale" (cioè mentre l'utente digita), oppure quando conferma il login.



è la stessa cosa, dire che nel campo ci devono essere solo numeri e lettere equivale a dire che altri caratteri all'infuori di quelli che hai elencato non possono essere usati, ti pare? ;)

c'hai ragione... il metodo matches già li esclude.

Beh... ora ho fatto un controllo sulle stringhe ottenuto in seguito alla pressione di un bottone.

Praticamente quello che devo realizzare è un applet che dati dei parametri in input e presi altri parametri dalle textfield, inserisce tutto in un database, dopo aver controllato che i parametri dalle textfield siano corretti (quei controlli di sopra)

Secondo te per quello che devo andare a fare dopo, conviene fare il controllo man mano che scrive o come ho già fatto va bene uguale ?

kingv
23-11-2005, 08:07
Secondo te per quello che devo andare a fare dopo, conviene fare il controllo man mano che scrive o come ho già fatto va bene uguale ?


se non ci sono dei motivi particolari per far il controllo "al volo" generalmente la validazione dei dati avviene sulla pressione di qualche pulsante di conferma. Oltre che più semplice da realizzare è anche molto meno "invasivo" nei confronti dell'utente. Io utilizzerei l'approccio che hai usato tu, se l'input è formalmente scorretto mandi un avviso all'utente e gli dai la possibilità di correggerli, quando sono ok li inserisci sul db. :O