Uploaded image for project: 'Tapestry 5'
  1. Tapestry 5
  2. TAP5-5

Context lost in a form fragment in a property editor component

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • 5.0.15
    • None
    • None
    • None

    Description

      I created a PropertyEditor to edit a special class, which content spans over one or more pair of String.

      The TML for the PropertyEditor declaration is :
      <t:block t:id="myProp">
      <t:editor.myPropEditor t:id="myPropEditor"
      propertyvalue="prop:context.propertyValue"
      propertyname="prop:context.label"
      messages="prop:context.containerMessages"/>
      </t:block>

      The TML of the property editor itself is :
      <t:label for="s11"/> <t:textfield t:id="s12"/> <br/>
      <t:label for="s21"/> : <t:textfield t:id="s22" /> <br/>

      <t:checkbox t:id="showFragment1" t:mixins="triggerfragment" fragment="fragment1"/>
      <t:formfragment t:id="fragment1" visible="showFragment1">
      <t:label for="t11"/> <t:textfield t:id="t12"/> <br/>
      <t:label for="t21"/> : <t:textfield t:id="t22" /> <br/>
      </t:formfragment>

      With a basic POJO class associated to that, and the declaration of the parameters :

      public class MyPropertyEditor {
      @Parameter(name="propertyValue",required=true)
      private MyProperty myProperty ;

      @Parameter(name="propertyName",required=true)
      private String propertyName ;

      @Parameter(name="messages",required=true)
      private Messages messages ;

      private String s11, s12, s21, s22, t11, t12, t21, t22 ;
      ...
      }

      If I try to read / update the myPropery parameter in that class :

      • from the s11, s12, s21, s22 getter or setter -> everything works ok, I can read or update this parameter
      • from the t11, t12, t21 or t22 getter or setter, I get the following stack trace :

      An unexpected application exception has occurred.

      • org.apache.tapestry5.runtime.ComponentEventException
        Failure writing parameter 'value' of component AppPropertyEditBlocks:mypropertyeditor.content2: Failure reading parameter 'propertyValue' of component AppPropertyEditBlocks:mypropertyeditor: No object of type org.apache.tapestry5.services.PropertyEditContext is available from the Environment. Available types are org.apache.tapestry5.ValidationTracker, org.apache.tapestry5.services.ComponentEventResultProcessor, org.apache.tapestry5.services.FormSupport, org.apache.tapestry5.services.Heartbeat.

      context
      eventType
      action
      location
      classpath:org/.../webapp/components/item/AbstractCreate.tml, line 6, column 24
      1 <t:container xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
      2
      3 ${message:title}
      4 <br/>
      5
      6 <t:form t:id="create">
      7 <t:errors/>
      8 <t:beaneditor t:id="createEditor" object="item" exclude="prop:excludelist"/>
      9 <t:submit value="message:create"/>
      10 </t:form>
      11

      • org.apache.tapestry5.ioc.internal.util.TapestryException
        Failure writing parameter 'value' of component AppPropertyEditBlocks:mypropertyeditor.content2: Failure reading parameter 'propertyValue' of component AppPropertyEditBlocks:mypropertyeditor: No object of type org.apache.tapestry5.services.PropertyEditContext is available from the Environment. Available types are org.apache.tapestry5.ValidationTracker, org.apache.tapestry5.services.ComponentEventResultProcessor, org.apache.tapestry5.services.FormSupport, org.apache.tapestry5.services.Heartbeat.

      location
      classpath:org/.../webapp/components/editor/MyPropertyEditor.tml, line 21, column 62
      16 <t:checkbox t:id="showFragment1" t:mixins="triggerfragment" fragment="fragment1"/>
      17 <t:label for="showFragment1"/>
      18
      19 <t:formfragment t:id="fragment1" visible="showFragment1">
      20 <t:label for="t11"/> : <t:textfield t:id="t12"/>
      21 <t:label for="t21"/> : <t:textfield t:id="t33" />
      22 </t:formfragment>
      23
      24
      25 </td></tr>
      26 </table>

      • org.apache.tapestry5.ioc.internal.util.TapestryException
        Failure reading parameter 'propertyValue' of component AppPropertyEditBlocks:mypropertyeditor: No object of type org.apache.tapestry5.services.PropertyEditContext is available from the Environment. Available types are org.apache.tapestry5.ValidationTracker, org.apache.tapestry5.services.ComponentEventResultProcessor, org.apache.tapestry5.services.FormSupport, org.apache.tapestry5.services.Heartbeat.

      location
      classpath:org/.../webapp/pages/AppPropertyEditBlocks.tml, line 7, column 73
      2
      3 <t:block t:id="myproperty">
      4 <t:editor.mypropertyeditor t:id="myPropertyEditor"
      5 propertyvalue="prop:context.propertyValue"
      6 propertyname="prop:context.label"
      7 messages="prop:context.containerMessages"/>
      8 </t:block>
      9

      • java.lang.RuntimeException
        No object of type org.apache.tapestry5.services.PropertyEditContext is available from the Environment. Available types are org.apache.tapestry5.ValidationTracker, org.apache.tapestry5.services.ComponentEventResultProcessor, org.apache.tapestry5.services.FormSupport, org.apache.tapestry5.services.Heartbeat.

      Stack trace
      o org.apache.tapestry5.internal.services.EnvironmentImpl.peekRequired(EnvironmentImpl.java:73)
      o org.limc.webapp.pages.AppPropertyEditBlocks._$environment_read_context(AppPropertyEditBlocks.java)
      o org.limc.webapp.pages.AppPropertyEditBlocks.getContext(AppPropertyEditBlocks.java:97)
      o org.apache.tapestry5.internal.bindings.PropBinding.get(PropBinding.java:53)
      o org.apache.tapestry5.internal.structure.InternalComponentResourcesImpl.readParameter(InternalComponentResourcesImpl.java:237)
      o org.apache.tapestry5.internal.structure.InternalComponentResourcesImpl.readParameter(InternalComponentResourcesImpl.java:252)
      o org.limc.webapp.components.editor.MyPropertyEditor._$read_parameter_propertyValue(MyPropertyEditor.java)
      o org.limc.webapp.components.editor.MyPropertyEditor.addTextPair(MyPropertyEditor.java:111)
      o org.limc.webapp.components.editor.MyPropertyEditor.setContent2(MyPropertyEditor.java:220)
      o org.apache.tapestry5.internal.bindings.PropBinding.set(PropBinding.java:66)
      o org.apache.tapestry5.internal.structure.InternalComponentResourcesImpl.writeParameter(InternalComponentResourcesImpl.java:273)
      o org.apache.tapestry5.corelib.base.AbstractTextField._$update_parameter_value(AbstractTextField.java)
      o org.apache.tapestry5.corelib.base.AbstractTextField.processSubmission(AbstractTextField.java:211)
      o org.apache.tapestry5.corelib.base.AbstractField.processSubmission(AbstractField.java:196)
      o org.apache.tapestry5.corelib.base.AbstractField.access$100(AbstractField.java:33)
      o org.apache.tapestry5.corelib.base.AbstractField$ProcessSubmission.execute(AbstractField.java:103)
      o org.apache.tapestry5.corelib.base.AbstractField$ProcessSubmission.execute(AbstractField.java:97)
      o org.apache.tapestry5.corelib.components.Form.executeStoredActions(Form.java:396)
      o org.apache.tapestry5.corelib.components.Form._$advised$onAction(Form.java:315)
      o org.apache.tapestry5.corelib.components.Form$onAction$invocation_11a730bb10b.invokeAdvisedMethod(Form$onAction$invocation_11a730bb10b.java)
      o org.apache.tapestry5.internal.services.AbstractComponentMethodInvocation.proceed(AbstractComponentMethodInvocation.java:71)
      o org.apache.tapestry5.ioc.internal.services.LoggingAdvice.advise(LoggingAdvice.java:37)
      o org.apache.tapestry5.internal.transform.LogWorker$1.advise(LogWorker.java:54)
      o org.apache.tapestry5.internal.services.AbstractComponentMethodInvocation.proceed(AbstractComponentMethodInvocation.java:80)
      o org.apache.tapestry5.corelib.components.Form.onAction(Form.java)
      o org.apache.tapestry5.corelib.components.Form.dispatchComponentEvent(Form.java)
      o org.apache.tapestry5.internal.structure.ComponentPageElementImpl.dispatchEvent(ComponentPageElementImpl.java:872)
      o org.apache.tapestry5.internal.structure.ComponentPageElementImpl.triggerContextEvent(ComponentPageElementImpl.java:1025)
      o org.apache.tapestry5.internal.services.ComponentEventRequestHandlerImpl.handle(ComponentEventRequestHandlerImpl.java:67)
      o org.apache.tapestry5.internal.services.ImmediateActionRenderResponseFilter.handle(ImmediateActionRenderResponseFilter.java:42)
      o org.apache.tapestry5.internal.services.AjaxFilter.handle(AjaxFilter.java:42)
      o org.apache.tapestry5.services.TapestryModule$37.handle(TapestryModule.java:1987)
      o org.apache.tapestry5.internal.services.ComponentEventDispatcher.dispatch(ComponentEventDispatcher.java:135)
      o org.apache.tapestry5.services.TapestryModule$12.service(TapestryModule.java:938)
      o org.limc.webapp.services.AppModule$3.service(AppModule.java:148)
      o org.limc.webapp.services.AppModule$1.service(AppModule.java:45)
      o org.apache.tapestry5.internal.services.LocalizationFilter.service(LocalizationFilter.java:42)
      o org.apache.tapestry5.services.TapestryModule$2.service(TapestryModule.java:586)
      o org.apache.tapestry5.internal.services.RequestErrorFilter.service(RequestErrorFilter.java:26)
      o org.apache.tapestry5.internal.services.StaticFilesFilter.service(StaticFilesFilter.java:79)
      o org.apache.tapestry5.internal.services.CheckForUpdatesFilter$2.invoke(CheckForUpdatesFilter.java:93)
      o org.apache.tapestry5.internal.services.CheckForUpdatesFilter$2.invoke(CheckForUpdatesFilter.java:84)
      o org.apache.tapestry5.ioc.internal.util.ConcurrentBarrier.withRead(ConcurrentBarrier.java:75)
      o org.apache.tapestry5.internal.services.CheckForUpdatesFilter.service(CheckForUpdatesFilter.java:106)
      o org.apache.tapestry5.services.TapestryModule$11.service(TapestryModule.java:918)
      o org.apache.tapestry5.upload.internal.services.MultipartServletRequestFilter.service(MultipartServletRequestFilter.java:44)
      o org.limc.webapp.services.AppModule$2.service(AppModule.java:58)
      o org.apache.tapestry5.internal.services.IgnoredPathsFilter.service(IgnoredPathsFilter.java:62)
      o org.apache.tapestry5.TapestryFilter.doFilter(TapestryFilter.java:168)
      o org.mortbay.jetty.servlet.WebApplicationHandler$CachedChain.doFilter(WebApplicationHandler.java:821)
      o org.mortbay.jetty.servlet.WebApplicationHandler.dispatch(WebApplicationHandler.java:471)
      o org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:568)
      o org.mortbay.http.HttpContext.handle(HttpContext.java:1530)
      o org.mortbay.jetty.servlet.WebApplicationContext.handle(WebApplicationContext.java:633)
      o org.mortbay.http.HttpContext.handle(HttpContext.java:1482)
      o org.mortbay.http.HttpServer.service(HttpServer.java:909)
      o org.mortbay.http.HttpConnection.service(HttpConnection.java:820)
      o org.mortbay.http.HttpConnection.handleNext(HttpConnection.java:986)
      o org.mortbay.http.HttpConnection.handle(HttpConnection.java:837)
      o org.mortbay.http.SocketListener.handleConnection(SocketListener.java:245)
      o org.mortbay.util.ThreadedServer.handle(ThreadedServer.java:357)
      o org.mortbay.util.ThreadPool$PoolThread.run(ThreadPool.java:534)

      Attachments

        Activity

          People

            hlship Howard Lewis Ship
            jpaumard José Paumard
            Votes:
            3 Vote for this issue
            Watchers:
            4 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: