passage de paramètre d'une page à une autre
Bonjour
je suis entrain de concevoir une interface d'historique article en utilisant une table jsf woodstock...
cette table jsf représente certains champs de ma table de base de données.
sur ma table jsf j'ai rajouté un champ contenant un lien hypertexte que j'ai baptisé "Détails". donc ce que je veux c'est que qu'on je clique sur ce lien la page de détails de l'article choisi s'affiche avec l'ensemble de ses informations....
aprés une brève recherche, j'ai compris qu'il faut faire appel à faces-config pour déclarer la séquence de page à lancer... en voici un aperçu :
Code:
1 2 3 4 5 6 7 8 9 10
|
<navigation-rule>
<from-view-id>/Page5.jsp</from-view-id>
<navigation-case>
<from-action>#{Page5.lien1_action}</from-action>
<from-outcome>success</from-outcome>
<to-view-id>/Page6.jsp</to-view-id>
</navigation-case>
</navigation-rule> |
sur la page5 j'ai la méthode qui transcrit l'événement de clique sur le lien hypertexte, la voici :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
|
public String lien1_action() throws NamingException, NamingException, NamingException, SQLException, ClassNotFoundException {
// TODO: Replace with your code
try {
RowKey rk = tableRowGroup1.getRowKey();
if (rk != null) {
int id = Integer.parseInt(registerDataProvider.getValue("id", rk).toString());
FacesContext context = FacesContext.getCurrentInstance();
Register register=null;
Connection connection = ConnectionManager.getInstance().getConnection();
Statement statement = connection.createStatement();
ResultSet resultSet=statement.executeQuery("SELECT * FROM register WHERE id=\""+id+"\"");
if(resultSet.next())
{
register=new Register(resultSet.getInt("id"),resultSet.getString("firstName"),resultSet.getString("lastName"),resultSet.getString("userName"),resultSet.getString("password"),resultSet.getString("profil"),resultSet.getString("email"),resultSet.getInt("contactNo"),resultSet.getString("address"),resultSet.getString("country"),resultSet.getString("state"));
register.setId(resultSet.getInt("id"));
register.setFirstName(resultSet.getString("firstName"));
register.setLastName(resultSet.getString("lastName"));
register.setUserName(resultSet.getString("userName"));
register.setPassword(resultSet.getString("password"));
register.setProfil(resultSet.getString("profil"));
register.setEmail(resultSet.getString("email"));
register.setContactNo(resultSet.getInt("contactNo"));
register.setAddress(resultSet.getString("address"));
register.setCountry(resultSet.getString("country"));
register.setState(resultSet.getString("state"));
}
resultSet.close();
statement.close();
}
} catch (Exception ex) {
log("ErrorDescription", ex);
error(ex.getMessage());
}
return "success";
} |
et dans la page de détails c-a-d la page6, je remplis directement les champs dans la méthode prereder() voici le code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
public void prerender() {
Register register = null;
FacesContext context = FacesContext.getCurrentInstance().getExternalContext().getResource(test.Register);
System.out.println(register.getId()); // affichage de test
id.setText(register.getId());
firstName.setText(register.getFirstName());
lastName.setText(register.getLastName());
userName.setText(register.getUserName());
password.setText(register.getPassword());
profil.setText(register.getProfil());
email.setText(register.getEmail());
contactNo.setText(register.getContactNo());
address.setText(register.getAddress());
country.setText(register.getCountry());
state.setText(register.getState());
} |
le problème c'est qu'il y'a rien qui s'affiche sur la page de détails....:cry:
je vous remércie à l'avance pour votre aide.:P