J'ai une base de données sur index.xhtml mon haricot: p> mon problème est que je reçois toujours le même index Dans le journal du serveur, même si je clique sur les différents boutons d'édition. Imaginez qu'il y a une seule collection fournie à la clé. Je n'ai pas montré que dans le haricot. P> Si je change de portée de la vue de la vue à la demande, cela fonctionne bien. Que peut être le problème avec EDIT: P> @viewscoped code>? Merci d'avance :) p>
public void editBook(ActionEvent ev) throws IOException{
if (ev.getSource() != null && ev.getSource() instanceof HtmlDataTable) {
HtmlDataTable objHtmlDataTable = (HtmlDataTable) ev.getSource();
System.out.println(objHtmlDataTable.getRowIndex());
}
}
3 Réponses :
Ce que vous pouvez faire est d'utiliser le Un exemple de code: p> [getRowData ()] [1] méthode code> sur le bean Java pour obtenir directement l'objet situé sur la ligne qui héberge le bouton sur lequel l'utilisateur a cliqué.
<h:commandButton value="Edit" actionListener="#{IndexBean.editBook}"/>
Bonjour Romaintaz, mais j'ai essayé votre solution et cela ne semble pas fonctionner. Je continue à obtenir des exceptions "sévère: reçu" javax.el.methodnotfoundexception "lors de l'appelant à l'écoute d'action '# {indexbean.editbook}' pour le composant 'j_idt35' grave: javax.el.methodnotfoundexception: méthode non trouvée: indexbean@d15176.editbook ( ) "S'il vous plaît aider :(
Bonjour, s'il vous plaît lisez mon édition. J'ai fait exactement ce que vous avez dit et j'ai toujours obtenu une méthode d'exceptionFoundException. Je n'ai pas compris ce que vous vouliez dire par "En outre, ne modifiez pas de modifier la signature de la méthode EditBook () en définissant un argument javax.faces.event.ActionEvent." Je n'ai rien de défini dans Face-config.xml. Dès que je passe d'action d'action, il commence à dire la méthodeNotFoundException
Désolé, je voulais dire "ne pas oublier i> modifier la signature de la méthode". Supprimer le lance ioexception code> car il est inutile. De plus, le code de votre méthode est incorrect dans votre édition, car la source ne sera pas le
htmldatatable code> lui-même. Vous devrez mettre en œuvre la méthode
getparentTatable () code> comme spécifié pour extraire l'objet DataTable.
Salut Romaintaz, la méthode ne fonctionne toujours pas. Il donne la méthodeNotFoundException. L'as tu essayé?
Vous avez déjà lié le
public void editBook() throws IOException{
int index = datatableBooks.getRowIndex(); // Actually not interesting info.
Book book = (Book) datatableBooks.getRowData(); // This is what you want.
}
Bonjour Balusc, votre article est génial comme d'habitude :). Votre réponse fonctionne si mon haricot est @RequestScopé. Mais ma vraie question reste toujours, pourquoi ne travaille-t-il pas dans @viewscoped? Si je viens de changer d'annotation de @requestScoped à @viewscoped, j'ai toujours la réponse que j'ai eu la 1ère fois. J'ai besoin de ma bean pour être @viewscoped. Quelle solution puis-je faire?
Où chargez-vous booklist code>?
Je le charge dans le rappel @postConstruct. Est-ce que je fais quelque chose de mal? Où devrais-je charger?
WOW! C'est un excellent article Balusc, tout ce dont nous avons besoin d'un jeu de données :)
@KRSNA: Il suffit d'ajouter une colonne avec des cases à cocher / Radiobuttons pour une sélection de plusieurs lignes.
Si vous utilisez EL 2.2, par exemple avec tomcat7, vous pouvez essayer J'espère aider P> P>
Liée: Stackoverflow.com/Questtions/4994458/...