Uploaded image for project: 'Tapestry'
  1. Tapestry
  2. TAPESTRY-1455

EventListener fails to update PropertySelection in Internet Explorer-only

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Cannot Reproduce
    • 4.1.2
    • None
    • XHR/dhtml/Ajax
    • None
    • Tapestry 4.1.2 snapshot from 5-9, WinXP

    Description

      I have an EventListener that is trying to take the input from one PropertySelection and update a second PropertySelection asynchronously based on the input from the first one. It works great in Firefox 2 but fails in IE7. In IE7, when I pick a value on the first dropdown, all values from the second dropdown disappear and a stacktrace appears on the console. I couldn't get it to work in IE6 either but I can't tell if it is the same problem or something else going on in the page.

      Here is some example code that demonstrates the problem:

      .html:
      <form jwcid="theForm@Form">
      <span jwcid="numbers@PropertySelection" value="ognl:selectedNumber" model="ognl:numberModel" />
      <br />
      <br />
      <span jwcid="letters@PropertySelection" value="ognl:selectedLetter" model="ognl:letterModel" />
      </form>

      .java:
      @InitialValue("1")
      public abstract Integer getSelectedNumber();

      public abstract String getSelectedLetter();

      public IPropertySelectionModel getNumberModel()
      {
      List<Integer> numbers = Arrays.asList(1, 2);
      return getBasicModel(numbers);
      }

      public IPropertySelectionModel getLetterModel()
      {
      if (getSelectedNumber().intValue() == 1)

      { List<String> letters = Arrays.asList("a", "b", "c"); return getBasicModel(letters); }

      List<String> letters = Arrays.asList("d", "e", "f");
      return getBasicModel(letters);
      }

      private IPropertySelectionModel getBasicModel(final List items)
      {
      return new IPropertySelectionModel()
      {
      public String getLabel(int index)

      { return items.get(index).toString(); }

      public Object getOption(int index)

      { return items.get(index); }

      public int getOptionCount()

      { return items.size(); }

      public String getValue(int index)

      { return Integer.toString(index); }

      public boolean isDisabled(int index)

      { return false; }

      public Object translateValue(String value)

      { return getOption(Integer.parseInt(value)); }

      };
      }

      @EventListener(targets="numbers", events="onchange", submitForm="theForm")
      public void numberSelected(IRequestCycle cycle)
      {
      try

      { cycle.getResponseBuilder().updateComponent("letters"); }

      catch (Exception e)

      { e.printStackTrace(); }

      }

      The stacktrace I get on the console is as follows:

      org.apache.hivemind.ApplicationRuntimeException: For input string: "" [context:/WEB-INF/app/DirectorAccount.html]
      at org.apache.tapestry.engine.RequestCycle.rewindForm(RequestCycle.java:474)
      at org.apache.tapestry.form.Form.trigger(Form.java:289)
      at org.apache.tapestry.engine.DirectService.triggerComponent(DirectService.java:166)
      at org.apache.tapestry.engine.DirectService.service(DirectService.java:142)
      at $IEngineService_1127198abca.service($IEngineService_1127198abca.java)
      at org.apache.tapestry.services.impl.EngineServiceOuterProxy.service(EngineServiceOuterProxy.java:72)
      at org.apache.tapestry.engine.AbstractEngine.service(AbstractEngine.java:246)
      at org.apache.tapestry.services.impl.InvokeEngineTerminator.service(InvokeEngineTerminator.java:54)
      at $WebRequestServicer_1127198aba3.service($WebRequestServicer_1127198aba3.java)
      at $WebRequestServicer_1127198ab9f.service($WebRequestServicer_1127198ab9f.java)
      at org.apache.tapestry.services.impl.WebRequestServicerPipelineBridge.service(WebRequestServicerPipelineBridge.java:61)
      at $ServletRequestServicer_1127198ab81.service($ServletRequestServicer_1127198ab81.java)
      at org.apache.tapestry.request.DecodedRequestInjector.service(DecodedRequestInjector.java:55)
      at $ServletRequestServicerFilter_1127198ab7d.service($ServletRequestServicerFilter_1127198ab7d.java)
      at $ServletRequestServicer_1127198ab83.service($ServletRequestServicer_1127198ab83.java)
      at collective.ui.custom.HibernateFilter.service(HibernateFilter.java:37)
      at $ServletRequestServicerFilter_1127198ab7b.service($ServletRequestServicerFilter_1127198ab7b.java)
      at $ServletRequestServicer_1127198ab83.service($ServletRequestServicer_1127198ab83.java)
      at collective.ui.custom.LuceneIndexFilter.service(LuceneIndexFilter.java:24)
      at $ServletRequestServicerFilter_1127198ab79.service($ServletRequestServicerFilter_1127198ab79.java)
      at $ServletRequestServicer_1127198ab83.service($ServletRequestServicer_1127198ab83.java)
      at org.apache.tapestry.multipart.MultipartDecoderFilter.service(MultipartDecoderFilter.java:52)
      at $ServletRequestServicerFilter_1127198ab77.service($ServletRequestServicerFilter_1127198ab77.java)
      at $ServletRequestServicer_1127198ab83.service($ServletRequestServicer_1127198ab83.java)
      at org.apache.tapestry.services.impl.SetupRequestEncoding.service(SetupRequestEncoding.java:53)
      at $ServletRequestServicerFilter_1127198ab7f.service($ServletRequestServicerFilter_1127198ab7f.java)
      at $ServletRequestServicer_1127198ab83.service($ServletRequestServicer_1127198ab83.java)
      at $ServletRequestServicer_1127198ab70.service($ServletRequestServicer_1127198ab70.java)
      at org.apache.tapestry.ApplicationServlet.doService(ApplicationServlet.java:123)
      at collective.ui.CollectiveApplicationServlet.doService(CollectiveApplicationServlet.java:71)
      at org.apache.tapestry.ApplicationServlet.doPost(ApplicationServlet.java:168)
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:763)
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
      at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:427)
      at org.mortbay.jetty.servlet.WebApplicationHandler$CachedChain.doFilter(WebApplicationHandler.java:832)
      at collective.servlet.ResponseHeaderFilter.doFilter(ResponseHeaderFilter.java:32)
      at org.mortbay.jetty.servlet.WebApplicationHandler$CachedChain.doFilter(WebApplicationHandler.java:823)
      at org.mortbay.jetty.servlet.WebApplicationHandler.dispatch(WebApplicationHandler.java:473)
      at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:556)
      at org.mortbay.http.HttpContext.handle(HttpContext.java:1563)
      at org.mortbay.jetty.servlet.WebApplicationContext.handle(WebApplicationContext.java:623)
      at org.mortbay.http.HttpContext.handle(HttpContext.java:1515)
      at org.mortbay.http.HttpServer.service(HttpServer.java:956)
      at org.mortbay.http.HttpConnection.service(HttpConnection.java:814)
      at org.mortbay.http.HttpConnection.handleNext(HttpConnection.java:981)
      at org.mortbay.http.HttpConnection.handle(HttpConnection.java:831)
      at org.mortbay.http.SocketListener.handleConnection(SocketListener.java:244)
      at org.mortbay.util.ThreadedServer.handle(ThreadedServer.java:357)
      at org.mortbay.util.ThreadPool$PoolThread.run(ThreadPool.java:534)
      Caused by: java.lang.NumberFormatException: For input string: ""
      at java.lang.NumberFormatException.forInputString(Unknown Source)
      at java.lang.Integer.parseInt(Unknown Source)
      at java.lang.Integer.parseInt(Unknown Source)
      at collective.md.ui.pages.DirectorAccount$1.translateValue(DirectorAccount.java:89)
      at org.apache.tapestry.form.PropertySelection.rewindFormComponent(PropertySelection.java:120)
      at org.apache.tapestry.form.AbstractFormComponent.renderComponent(AbstractFormComponent.java:94)
      at org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:724)
      at org.apache.tapestry.services.impl.DojoAjaxResponseBuilder.render(DojoAjaxResponseBuilder.java:590)
      at org.apache.tapestry.AbstractComponent.renderBody(AbstractComponent.java:537)
      at org.apache.tapestry.form.FormSupportImpl.rewind(FormSupportImpl.java:603)
      at org.apache.tapestry.form.Form.renderComponent(Form.java:205)
      at org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:724)
      at org.apache.tapestry.services.impl.DojoAjaxResponseBuilder.render(DojoAjaxResponseBuilder.java:590)
      at org.apache.tapestry.form.Form.rewind(Form.java:278)
      at org.apache.tapestry.engine.RequestCycle.rewindForm(RequestCycle.java:453)
      ... 48 more

      Attachments

        Activity

          People

            jkuhnert Jesse Kuhnert
            dotteben Ben Dotte
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: