Newsgroup: it.comp.java
Titolo: Action Listener in datatable....aiutatemi...

Salve ragazzi,
avrei questo quesito da porvi.
Ho realizzato un datatable per permettere all'utente l'inserimento di
più form(ogni riga è un form). Alla fine della riga vi è un
commandlink che carica un ActionListener che esegue la query sulla
tabella della riga inserita.
Il problema è che nella tabella mi vengono inseriti tutti valori
NULLI!!!!
E' come se non riuscissi a passare all'actionListener la riga corrente!
Vi prego aiutatemi,non so più cosa fare.
Ecco il codice
public void editBiosample(ActionEvent event) throws SQLException {
	//FacesContext facesContext=FacesContext.getCurrentInstance();
	setBiosampleItem((Biosample) getBiosampleDataTable().getRowData());
	//BiosampleTable biosampleItem = (BiosampleTable)table.getRowData();
	DataSource dataSource = Singleton.getInstance().getDataSource();
	Connection conn = dataSource.getConnection();
	if (conn != null) {
		Biosample bean9 = (Biosample) ViewUtils
		.eval("#{biosample}");
	PreparedStatement pst3 = null;
	pst3 = conn	.prepareStatement("INSERT INTO
campione(id_,organismo,protocollotrattamento,metodoestrazione,tipoamplificazione,protocolloibridazione,protocollomarcatura,valore1,valore2,valore3,valore4)
VALUES(?,?,?,?,?,?,?,?,?,?,?)");
	pst3.setInt(1, 20);
	pst3.setString(2, "ciao");
	pst3.setInt(3, nrows);
	pst3.setString(4, bean9.getExtractionMethod());
	pst3.setString(5, bean9.getAmplification());
	pst3.setString(6, bean9.getHybridation());
	pst3.setString(7, bean9.getLabel());
	pst3.setString(8, bean9.getExpFact1());
	pst3.setString(9, bean9.getExpFact2());
	pst3.setString(10, bean9.getExpFact3());
	pst3.setString(11, bean9.getExpFact4());
	pst3.executeUpdate();
	pst3.close();
	conn.close();
	}
 
 
 
 
 
}

Ecco il codice
perche' invece non ci dici (o controlli) prima se l'oggetto ritornato da
  getBiosampleDataTable().getRowData()
e' corretto oppure no?
Le cose sono 2:
-se e' corretto allora perche' ci mostri tutta la pappardella di JFS? che ci 
frega a noi?!
-se non e' corretto allora perche' ci mostri tutta la pappardella del db? 
che ci frega a noi?!
Ci presenti un problema dove non si sa se riguarda JSF, oppure il tuo 
accesso al DB.
Continui a fare 100 domande ed a non ottenere risposte per questo motivo.
Sforzati invece di fare di capire cosa non funziona, e poi chiedi a noi, 
altrimenti butti via solo tempo. 

Scusami del disturbo ma ho davvero bisogno del tuoi aiuto....
il getRowData mi restituisce un oggetto non nullo...cosa posso fare?
Questa è la mia classe,quando vado ad analizzare uno dei parametri a
caso,tipo
biosampleItem.getExtractionMethod() mi dice che è nullo.
Puoi aiutarmi?
Grazie
package giu;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.component.html.HtmlDataTable;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import javax.sql.DataSource;
public class BiosamplesTable {
	private List biosamples;//myTable è diventato User
	private HtmlDataTable biosampleDataTable;
	private Biosample biosampleItem;
	private int nrows;
	public HtmlDataTable getBiosampleDataTable(){
		return biosampleDataTable;
	}
	public void setBiosampleDataTable(HtmlDataTable biosampleDataTable){
		this.biosampleDataTable=biosampleDataTable;
	}
	public Biosample getBiosampleItem(){
		return biosampleItem;
	}
	public void setBiosampleItem(Biosample biosampleItem){
		this.biosampleItem=biosampleItem;
	}
	public List getBiosamples() throws Exception {
	    loadBiosamples(); // Reload after every request.
	    return biosamples;
	}
//	 Setters ----------------------------------------------------------
	/**
	 * @param users  The users to set.
	 * @uml.property  name="users"
	 */
	public void setBiosamples(List biosamples) {
	    this.biosamples = biosamples;
	}
public void loadBiosamples() throws Exception {
			List biosamples = new ArrayList();
			for(int i=0;i<nrows;i++){
			Biosample biosample=new Biosample();
			biosamples.add(biosample);
			}
			setBiosamples(biosamples);
	}
public int getNrows() {
		return nrows;
	}
public void setNrows(int nrows) {
		this.nrows = nrows;
	}
public void editBiosample(ActionEvent event) throws SQLException {
	//FacesContext facesContext=FacesContext.getCurrentInstance();
	setBiosampleItem((Biosample) getBiosampleDataTable().getRowData());
	if ((Biosample) getBiosampleDataTable().getRowData()!=null){
		FacesContext facesContext=FacesContext.getCurrentInstance();
		facesContext.addMessage(null,new
FacesMessage(FacesMessage.SEVERITY_ERROR,"Il rowdata è pieno.","Row
data pieno."));
	}else
		{FacesContext facesContext=FacesContext.getCurrentInstance();
		facesContext.addMessage(null,new
FacesMessage(FacesMessage.SEVERITY_ERROR,"Il row data è nullo.","Row
data nullo."));
		}
	DataSource dataSource = Singleton.getInstance().getDataSource();
	Connection conn = dataSource.getConnection();
	if (conn != null) {
	PreparedStatement pst3 = null;
	pst3 = conn	.prepareStatement("INSERT INTO
campione(id_,organismo,protocollotrattamento,metodoestrazione,tipoamplificazione,protocolloibridazione,protocollomarcatura,valore1,valore2,valore3,valore4)
VALUES(?,?,?,?,?,?,?,?,?,?,?)");
	pst3.setInt(1, 20);
	pst3.setString(2, "ciao");
	pst3.setInt(3, nrows);
	pst3.setString(4, biosampleItem.getExtractionMethod());
	pst3.setString(5, biosampleItem.getAmplification());
	pst3.setString(6, biosampleItem.getHybridation());
	pst3.setString(7, biosampleItem.getLabel());
	pst3.setString(8, biosampleItem.getExpFact1());
	pst3.setString(9, biosampleItem.getExpFact2());
	pst3.setString(10, biosampleItem.getExpFact3());
	pst3.setString(11, biosampleItem.getExpFact4());
	pst3.executeUpdate();
	pst3.close();
	conn.close();
	}
 
 
 
 
 
}
}