The ajax stuff is firing (as I can see in the ajax debug window) but the
panel does not get updated.
I know I'm getting the id from the drop down and the ajax bit itself is fine
as I can get the value of the drop down and append it to a test label on the
form that's used to store the dropdown details.
I think it's mostly my lack of understanding of what actually fires with the
ajax call, as I need to be able to refresh the values from the database.
Should I be creating a Model overriding the setObject to do this?
wicket user wrote:
>
> Hi Andrew,
>
> So what's actually happening? Anything? Exceptions or does the image just
> stay the same?
>
>
>
> On 05/12/2007, Andrew Moore <[EMAIL PROTECTED]> wrote:
>>
>>
>> Hi,
>> I've got a page, which includes a drop down choice box, and a panel (with
>> a
>> list of images).
>>
>> The drop down box holds an id (which ties back to a list of images), what
>> I'm wanting to be able to do is that if the user changes the drop down
>> choice, the panel refreshes via ajax with the new images.
>>
>> Here's a few snippets of code:
>>
>>
>> -------------------------------------------------------------------------------------------------
>> //insert the image preview panel
>> final ImagePreviewPanel imagePreviewPanel = new
>> ImagePreviewPanel("imagePreviewPanel", generalPage.getImageCollectionId
>> ());
>> imagePreviewPanel.setOutputMarkupId(true);
>> form.add(imagePreviewPanel);
>> form.setOutputMarkupId(true);
>>
>> //add the OnChange for the ajax call
>> OnChangeAjaxBehavior onChangeAjaxBehavior = new OnChangeAjaxBehavior(){
>> protected void onUpdate(AjaxRequestTarget target) {
>> FormComponent fc = getFormComponent();
>> fc.getForm();
>> GeneralPage aGeneralPage = (GeneralPage)
>> fc.getForm().getModelObject();
>> //get the drop down image collection id
>> if (aGeneralPage.getImageCollectionOption() != null){
>> String keyValue =
>> aGeneralPage.getImageCollectionOption().getKey();
>>
>> imagePreviewPanel.setImageCollectionId(new
>> Long(aGeneralPage.getImageCollectionOption().getKey()));
>> }
>> target.addComponent(imagePreviewPanel);
>> }
>> };
>>
>>
>> -------------------------------------------------------------------------------------------------
>>
>> Then I've got the panel (which I've cut down on the details here to make
>> it
>> a bit easier to understand)
>>
>>
>> -------------------------------------------------------------------------------------------------
>> public class ImagePreviewPanel extends Panel
>> {
>> private Long imageCollectionId;
>> private String galleryCounterText = "";
>> private List imageList = new ArrayList();
>>
>> public ImagePreviewPanel(final String componentId, Long
>> anImageCollectionId){
>> super(componentId);
>> //set up the instance variable from the constructor
>> setImageCollectionId(anImageCollectionId);
>>
>> //now add the image previews
>> //first get the images if there are any
>> ImageCollection imageCollection =
>> imageCollectionDao.findByImageCollectionId(imageCollectionId);
>>
>> WebMarkupContainer dataImagecontainer = new
>> WebMarkupContainer("dataimage");
>> dataImagecontainer.setOutputMarkupId(true);
>> add(dataImagecontainer);
>>
>> //display the total number of images in the list
>> galleryCounterText = imageCollection.getImages().size();
>> add(new Label("galleryCounter",new PropertyModel(this,
>> "galleryCounterText")).setOutputMarkupId(true));
>>
>> //get the collection of images from the imageCollection
>> object
>> imageList = imageCollection.getImages();
>>
>> final PageableListView imageView;
>> dataImagecontainer.add(imageView = new
>> PageableListView("galleryList", new
>> CompoundPropertyModel(imageList), 20){
>> public void populateItem(final ListItem
>> listItem){
>> final Image image =
>> (Image)listItem.getModelObject();
>>
>> //set up default image element
>> description
>> String imageElementDescription = new
>> StringResourceModel("noImageElementDescription", this, null).getString();
>>
>> //set up image element description if a
>> better one exists
>> StaticImage staticImage = new
>> StaticImage("previewImage",
>> image.getImageHref());
>> staticImage.setOutputMarkupId(true);
>> listItem.add(staticImage);
>> }
>> });
>> imageView.setOutputMarkupId(true);
>> }
>>
>>
>> public Long getImageCollectionId() {
>> return imageCollectionId;
>> }
>>
>> public void setImageCollectionId(Long imageCollectionId) {
>> this.imageCollectionId = imageCollectionId;
>> }
>> }
>>
>>
>>
>>
>>
>> -------------------------------------------------------------------------------------------------
>> The only thing is, don't feel like I've got my head completely around the
>> wicket models and I'm having trouble working out what I need to do to the
>> page and panel to get the panel to refresh via ajax.
>>
>> Sorry for the amount of code, but it's the only way I think to try and
>> describe what I've currently got.
>> Thanks
>> Andrew
>> --
>> View this message in context:
>> http://www.nabble.com/Using-ajax-to-update-a-panel-tf4949239.html#a14170394
>> Sent from the Wicket - User mailing list archive at Nabble.com.
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>> For additional commands, e-mail: [EMAIL PROTECTED]
>>
>>
>
>
--
View this message in context:
http://www.nabble.com/Using-ajax-to-update-a-panel-tf4949239.html#a14171495
Sent from the Wicket - User mailing list archive at Nabble.com.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]