Hello again.

I am trying to open a modal window from within a repeater.  In the example application Library, my goal is equivalent to opening BookDetails in a ModalWindow instead of going to a separate page.

All of the below works perfectly if I place the html anchor outside of the html table and if I add() the AjaxLink outside of the ListView.  I have a simple panel:

<wicket:panel>
  <div wicket:id="editItemPopup"></div>
 
  <table>
    <tr>
      <th>Product</th>
      <th>Sku</th>
      <th>Price</th>
      <th wicket:id="day1">7/1</th>
    </tr>
    <tr wicket:id="items">
      <td wicket:id="product">The Hotel</td>
      <td wicket:id="sku">King</td>
      <td wicket:id="price">$100</td>
      <td>
        <a wicket:id="openEditItem" href="">          <span wicket:id="available">20</span>
        </a>
      </td>
    </tr>
  </table>
</wicket:panel>

public class ProductPanel extends Panel {

    private static final long serialVersionUID = -3546659646601591561L;
    private Availability availability;

    public ProductPanel(String id) {
        super(id);

        final ModalWindow editItemWindow = new ModalWindow("editItemPopup");
        editItemWindow.setTitle("Add/Edit Item");
        editItemWindow.setContent(new EditItemPanel(editItemWindow
                .getContentId()));

        add(editItemWindow);

        add(new Label("day1", "10/1"));

        List<WarehouseItem> whsItems = WarehouseService
                .getAvailability(ProductType.HOTEL);
        availability = new Availability(whsItems);

        ListView itemView = new ListView("items", availability
                .getSkuAvailabilities()) {

            private static final long serialVersionUID = 7672521500786369826L;

            @Override
            protected void populateItem(ListItem listItem) {
                SkuAvailability skuAvailability = (SkuAvailability) listItem
                        .getModelObject();
                Sku sku = skuAvailability.getSku();
                listItem.add(new Label("product", sku.getProductName()));
                listItem.add(new Label("sku", sku.getName()));
                listItem.add(new Label("price", String.valueOf(skuAvailability
                        .getWarehouseItem().getPrice())));

                Date d = availability.getEventDates ().first();
                WarehouseItem wItem = skuAvailability.getWarehouseItem(d);

                add(new AjaxLink("openEditItem") {
                    private static final long serialVersionUID = 1L;
                    public void onClick(AjaxRequestTarget target) {
                        editItemWindow.show(target);
                    }
                });

                int qty = 0;
                if (wItem != null)
                    qty = wItem.getQuantityAvailable();

                listItem.add(new Label("available", String.valueOf(qty)));
            }
        };

        add(itemView);
    }
}


Unfortunately, when I add the AjaxLink within the ListView I get the following exception.  I'm likely missing something rather simple, but thus far it's eluding me.  Thank you for your time.


WicketMessage: Error attaching this container for rendering: [MarkupContainer [Component id = items, page = com.vegas.pos.PosPage, path = 0:navTabs:panel:productTabs:panel:items.ProductPanel$1, isVisible = true, isVersioned = false]]

Root cause:

java.lang.IllegalArgumentException: A child with id 'openEditItem' already exists:
[MarkupContainer [Component id = items, page = com.vegas.pos.PosPage, path = 0:navTabs:panel:productTabs:panel: items.ProductPanel$1, isVisible = true, isVersioned = false]]
at wicket.MarkupContainer.add(MarkupContainer.java:156)
at com.vegas.pos.browse.ProductPanel$1.populateItem(ProductPanel.java:58)
at wicket.markup.html.list.ListView.internalOnAttach (ListView.java:580)
at wicket.Component.internalAttach(Component.java:2521)
at wicket.MarkupContainer.internalAttach(MarkupContainer.java:341)
at wicket.MarkupContainer.internalAttach(MarkupContainer.java :354)
at wicket.MarkupContainer.internalAttach(MarkupContainer.java:354)
at wicket.MarkupContainer.internalAttach(MarkupContainer.java:354)
at wicket.MarkupContainer.internalAttach(MarkupContainer.java :354)
at wicket.MarkupContainer.internalAttach(MarkupContainer.java:354)
at wicket.Page.renderPage(Page.java:387)
at wicket.request.target.component.BookmarkablePageRequestTarget.respond(BookmarkablePageRequestTarget.java :226)
at wicket.request.compound.DefaultResponseStrategy.respond(DefaultResponseStrategy.java:49)
at wicket.request.compound.AbstractCompoundRequestCycleProcessor.respond(AbstractCompoundRequestCycleProcessor.java :66)
at wicket.RequestCycle.doProcessEventsAndRespond(RequestCycle.java:858)
at wicket.RequestCycle.processEventsAndRespond(RequestCycle.java:885)
at wicket.RequestCycle.step(RequestCycle.java:966)
at wicket.RequestCycle.steps(RequestCycle.java:1040)
at wicket.RequestCycle.request(RequestCycle.java:454)
at wicket.protocol.http.WicketServlet.doGet(WicketServlet.java:216)
at javax.servlet.http.HttpServlet.service (HttpServlet.java:740)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:358)
at org.mortbay.jetty.servlet.WebApplicationHandler.dispatch (WebApplicationHandler.java:294)
at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:567)
at org.mortbay.http.HttpContext.handle(HttpContext.java:1807)
at org.mortbay.jetty.servlet.WebApplicationContext.handle (WebApplicationContext.java:525)
at org.mortbay.http.HttpContext.handle(HttpContext.java:1757)
at org.mortbay.http.HttpServer.service(HttpServer.java:879)
at org.mortbay.http.HttpConnection.service (HttpConnection.java:789)
at org.mortbay.http.HttpConnection.handleNext(HttpConnection.java:960)
at org.mortbay.http.HttpConnection.handle(HttpConnection.java:806)
at org.mortbay.http.SocketListener.handleConnection (SocketListener.java:218)
at org.mortbay.util.ThreadedServer.handle(ThreadedServer.java:331)
at org.mortbay.util.ThreadPool$PoolThread.run(ThreadPool.java:520)

Complete stack:

wicket.WicketRuntimeException : Error attaching this container for rendering: [MarkupContainer [Component id = items, page = com.vegas.pos.PosPage, path = 0:navTabs:panel:productTabs:panel:items.ProductPanel$1, isVisible = true, isVersioned = false]]
at wicket.MarkupContainer.internalAttach(MarkupContainer.java:361)
at wicket.MarkupContainer.internalAttach(MarkupContainer.java:354)
at wicket.MarkupContainer.internalAttach(MarkupContainer.java:354)
at wicket.MarkupContainer.internalAttach(MarkupContainer.java:354)
at wicket.MarkupContainer.internalAttach(MarkupContainer.java:354)
at wicket.MarkupContainer.internalAttach(MarkupContainer.java:354)
at wicket.Page.renderPage(Page.java:387)
at wicket.request.target.component.BookmarkablePageRequestTarget.respond(BookmarkablePageRequestTarget.java:226)
at wicket.request.compound.DefaultResponseStrategy.respond (DefaultResponseStrategy.java:49)
at wicket.request.compound.AbstractCompoundRequestCycleProcessor.respond(AbstractCompoundRequestCycleProcessor.java:66)
at wicket.RequestCycle.doProcessEventsAndRespond(RequestCycle.java :858)
at wicket.RequestCycle.processEventsAndRespond(RequestCycle.java:885)
at wicket.RequestCycle.step(RequestCycle.java:966)
at wicket.RequestCycle.steps(RequestCycle.java:1040)
at wicket.RequestCycle.request (RequestCycle.java:454)
at wicket.protocol.http.WicketServlet.doGet(WicketServlet.java:216)

Page

    [Page class = com.vegas.pos.PosPage, id = 0]:

    # Path Size Type Model Object
    1    _<body>    425 bytes    wicket.markup.html.internal.HtmlBodyContainer       
    2    head    452 bytes    wicket.markup.html.basic.Label    Concierge   
    3    navTabs    14.1K    wicket.extensions.markup.html.tabs.TabbedPanel    0   
    4    navTabs:panel    12.6K    com.vegas.pos.browse.BrowsePanel       
    5    navTabs:panel:cart    451 bytes    wicket.markup.html.basic.Label    The Cart   
    6    navTabs:panel:productTabs    14.1K    wicket.extensions.markup.html.tabs.TabbedPanel    0   
    7    navTabs:panel:productTabs:panel    10.1K    com.vegas.pos.browse.HotelPanel       
    8    navTabs:panel:productTabs:panel:day1    447 bytes    wicket.markup.html.basic.Label    10/1   
    9    navTabs:panel:productTabs:panel:editItemPopup    3.1K    wicket.extensions.ajax.markup.html.modal.ModalWindow       
    10    navTabs:panel:productTabs:panel:editItemPopup:content    625 bytes    com.vegas.pos.browse.EditItemPanel       
    11    navTabs:panel:productTabs:panel:items    14.1K    wicket.markup.html.list.ListView    [EMAIL PROTECTED], [EMAIL PROTECTED], [EMAIL PROTECTED], [EMAIL PROTECTED], [EMAIL PROTECTED], [EMAIL PROTECTED], [EMAIL PROTECTED], [EMAIL PROTECTED], [EMAIL PROTECTED], [EMAIL PROTECTED], [EMAIL PROTECTED], [EMAIL PROTECTED], [EMAIL PROTECTED], [EMAIL PROTECTED], [EMAIL PROTECTED], [EMAIL PROTECTED], [EMAIL PROTECTED], [EMAIL PROTECTED], [EMAIL PROTECTED], [EMAIL PROTECTED]   
    12    navTabs:panel:productTabs:panel:items:0    14.1K    wicket.markup.html.list.ListItem    [EMAIL PROTECTED]   
    13    navTabs:panel:productTabs:panel:items:0:available    450 bytes    wicket.markup.html.basic.Label    10   
    14    navTabs:panel:productTabs:panel:items:0:price    447 bytes    wicket.markup.html.basic.Label    100   
    15    navTabs:panel:productTabs:panel:items:0:product    454 bytes    wicket.markup.html.basic.Label    Motel 14   
    16    navTabs:panel:productTabs:panel:items:0:sku    447 bytes    wicket.markup.html.basic.Label    Queen   
    17    navTabs:panel:productTabs:panel:items:1    14.1K    wicket.markup.html.list.ListItem    [EMAIL PROTECTED]   
    18    navTabs:panel:productTabs:panel:items:1:price    447 bytes    wicket.markup.html.basic.Label    100   
    19    navTabs:panel:productTabs:panel:items:1:product    454 bytes    wicket.markup.html.basic.Label    Motel 19   
    20    navTabs:panel:productTabs:panel:items:1:sku    447 bytes    wicket.markup.html.basic.Label    Queen   
    21    navTabs:panel:productTabs:panel:items:openEditItem    14.1K    wicket.ajax.markup.html.AjaxLink       
    22    navTabs:panel:productTabs:tabs    14.1K    wicket.markup.html.list.Loop    4   
    23    navTabs:panel:productTabs:tabs:0    14.1K    wicket.markup.html.WebMarkupContainer       
    24    navTabs:panel:productTabs:tabs:0:link    14.1K    wicket.markup.html.link.Link       
    25    navTabs:panel:productTabs:tabs:0:link:title    450 bytes    wicket.markup.html.basic.Label    Hotels   
    26    navTabs:panel:productTabs:tabs:1    14.1K    wicket.markup.html.WebMarkupContainer       
    27    navTabs:panel:productTabs:tabs:1:link    14.1K    wicket.markup.html.link.Link       
    28    navTabs:panel:productTabs:tabs:1:link:title    449 bytes    wicket.markup.html.basic.Label    Shows   
    29    navTabs:panel:productTabs:tabs:2    14.1K    wicket.markup.html.WebMarkupContainer       
    30    navTabs:panel:productTabs:tabs:2:link    14.1K    wicket.markup.html.link.Link       
    31    navTabs:panel:productTabs:tabs:2:link:title    449 bytes    wicket.markup.html.basic.Label    Tours   
    32    navTabs:panel:productTabs:tabs:3    14.1K    wicket.markup.html.WebMarkupContainer       
    33    navTabs:panel:productTabs:tabs:3:link    14.1K    wicket.markup.html.link.Link       
    34    navTabs:panel:productTabs:tabs:3:link:title    453 bytes    wicket.markup.html.basic.Label    Edit Item   
    35    navTabs:tabs    14.1K    wicket.markup.html.list.Loop    2   
    36    navTabs:tabs:0    14.1K    wicket.markup.html.WebMarkupContainer       
    37    navTabs:tabs:0:link    14.1K    wicket.markup.html.link.Link       
    38    navTabs:tabs:0:link:title    451 bytes    wicket.markup.html.basic.Label    Product   
    39    navTabs:tabs:1    14.1K    wicket.markup.html.WebMarkupContainer       
    40    navTabs:tabs:1:link    14.1K    wicket.markup.html.link.Link       
    41    navTabs:tabs:1:link:title    449 bytes    wicket.markup.html.basic.Label    Admin   
    42    title    453 bytes    wicket.markup.html.basic.Label    Concierge   

--
Scott Swank
reformed mathematician
-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys -- and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Wicket-user mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/wicket-user

Reply via email to