Texte de lien variable Apache Wicket dans le tableau

J’essaie de construire une table avec des liens d’actions où le titre du lien et la logique changent en fonction de certaines valeurs.

Balisage:

 
NAME DESCRIPTION STATUS ACTIONS
</span EDIT DUPLICATE DELETE

Logique Java:

 // get list from repo List list = (List) getUserList(); // render list view add(new ListView("cListview", list) { private static final long serialVersionUID = 1747919695791673759L; @SuppressWarnings({ "rawtypes", "unchecked" }) protected void populateItem(ListItem item) { final User user = (User) item.getModelObject(); item.add(new Label("name", user.getName())); item.add(new Label("description", user.getName())); item.add(new Label("status", user.getIsEnabled())); // Check user status Ssortingng controlLabel = ""; Ssortingng status = "new"; // TODO create enumerated status field in User pojo or even // better a hasmap switch (status) { case "new": controlLabel = "ACTIVATE"; case "running": controlLabel = "PAUSE"; case "paused": controlLabel = "RESUME"; default: break; } // activate/pause/resume link item.add(new Link("control", item.getModel()) { private static final long serialVersionUID = -5420108740617806989L; @Override public void onClick() { User user = (User) getModelObject(); System.out.println(user.getName() + " : activated. "); } }).add(new Label("label", Model.of(controlLabel))); 

J’ai utilisé ces liens pour obtenir de l’aide:

Comment changer le texte du lien dans Wicket? Comment créer une liste récurrente de liens dans une balise li en utilisant le guichet apache?

Il ne semble pas y avoir de correspondance puisque mon titre de lien de variante vit dans une ligne de tableau.

Je reçois cette exception:

 Failed to handle: . It might be that no resolver has been registered to handle this special tag. But it also could be that you declared wicket:id=label in your markup, but that you either did not add the component to your page at all, or that the hierarchy does not match. Container: [Link [Component id = control]] MarkupStream: [markup = bundle://306.49:1/com/cortex/web/pages/CampaignsPage.html , index = 1, current = '' (line 0, column 0)] at org.apache.wicket.markup.MarkupStream.throwMarkupException(MarkupStream.java:526) at org.apache.wicket.MarkupContainer.renderNext(MarkupContainer.java:1411) at org.apache.wicket.MarkupContainer.renderAll(MarkupContainer.java:1557) at org.apache.wicket.MarkupContainer.renderComponentTagBod [EDIT] When using span tags:  I get: Last cause: Unable to find component with id 'label' in [Link [Component id = control]] Expected: 'campaignsListview:0:control:label'. Found with similar names: 'cListview:0:label',... 

Vous ajoutez l’étiquette à votre article et non à votre lien comme ceci:

 item.add(new Link("control"){...}).add(new Label("label")); 

Cela semble un peu flou à cause de tous les crochets. Vous pouvez extraire le lien et l’append séparément pour rendre votre code plus clair:

 ... Link link = new Link("control") { ... }; Label label = new Label("label"); link.add(label); item.add(link) ...