In your snippet you put the isVisible in the ByteArrayResource. That's why you get the error message - move it to your ResourceLink
One easy way to update from parent would be: make a method in your panel which returns your link then make your panel a field in the parent and call the getter in the callback and add the link to your AjaxRequestTarget there. kind regards Tobias > Am 09.05.2015 um 20:19 schrieb Chris <[email protected]>: > > Hi, > > thanks, I am getting the message "method does not override method from its > superclass." > > The problem is that I do not have the callback method in this panel but in > its parent; I would need to have a getter method so that I can directly > access the resource link from the panel instance and change its visibility. > > ResourceLink pl = new ResourceLink("pdfLink", new > ByteArrayResource("application/pdf") { > > @Override > protected boolean isVisible() { > return ....; > } > > }); > > Chris > > >> Am 09.05.2015 um 20:12 schrieb Tobias Soloschenko >> <[email protected]>: >> >> Yes - should work because isVisible is inherited from component: >> >> http://ci.apache.org/projects/wicket/apidocs/6.0.x/org/apache/wicket/markup/html/link/ResourceLink.html >> >> But watch out not to put in expensive calls in it! The user guide is also >> mentioning a lot about that topic: >> >> https://wicket.apache.org/guide/guide/bestpractices.html#bestpractices_5 >> >> At this place it is good to mention the new location of the guide: >> >> http://ci.apache.org/projects/wicket/guide/6.x/ >> >> http://ci.apache.org/projects/wicket/guide/7.x/ >> >> kind regards >> >> Tobias >> >>> Am 09.05.2015 um 19:58 schrieb Chris <[email protected]>: >>> >>> Hi Tobias, >>> >>> thanks! Can the isVisible method be directly overridden also by a >>> ResourceLink? >>> >>> ResourceLink pl = new ResourceLink(..) { >>> protected boolean isVisible() {…} >>> } >>> Chris >>> >>> >>>> Am 09.05.2015 um 19:46 schrieb Tobias Soloschenko >>>> <[email protected]>: >>>> >>>> Hi, >>>> >>>> the constructor of your panel is only called at a normal request - you >>>> have to set the visibility of your link in the ajax callback via >>>> AjaxRequestTarget. >>>> >>>> 1. setOutputMarkupId and setOutputMarkupPlaceholder of the link to true >>>> (in your constructor) >>>> >>>> 2. set the visibility to your component in the callback method (based on >>>> your Model) >>>> >>>> 3. add the component to the AjaxRequestTarget so that it is updated >>>> >>>> Another solution would be to override the isVisible method and return the >>>> visibility based on your model and then only add the component to the >>>> AjaxRequestTarget. >>>> >>>> kind regards >>>> >>>> Tobias >>>> >>>>> Am 09.05.2015 um 19:29 schrieb Chris <[email protected]>: >>>>> >>>>> Hi all, >>>>> >>>>> currently, the visibility of the resource link is not updated when the >>>>> parent component of the panel is rendered again based on an ajax call. >>>>> >>>>> How can the visibility set dynamically based on the model’s data? >>>>> >>>>> Thanks, Chris >>>>> >>>>> public SomePanel(String id, final IModel<List<A>> model) { >>>>> super(id, model); >>>>> >>>>> ResourceLink pl = new ResourceLink("pdfLink", new >>>>> ByteArrayResource("application/pdf") {...} >>>>> pl.setVisible(routingModel.getObject().get(0).getElements().size() > 0); >>>>> ... >>>>> } >>>>> --------------------------------------------------------------------- >>>>> To unsubscribe, e-mail: [email protected] >>>>> For additional commands, e-mail: [email protected] >>>> >>>> --------------------------------------------------------------------- >>>> To unsubscribe, e-mail: [email protected] >>>> For additional commands, e-mail: [email protected] >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: [email protected] >> For additional commands, e-mail: [email protected] > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [email protected] > For additional commands, e-mail: [email protected] > --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
