You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tapestry.apache.org by "José Paumard (JIRA)" <de...@tapestry.apache.org> on 2008/06/10 17:34:45 UTC
[jira] Updated: (TAPESTRY-2430) Context lost in a form fragment in
a property editor component
[ https://issues.apache.org/jira/browse/TAPESTRY-2430?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
José Paumard updated TAPESTRY-2430:
-----------------------------------
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)
was:
Create a property editor component with a parameter accessed through the context, and a form fragment in it.
The parameter can be accessed from the setters of the property defined in the component.
When accessed from the setter of a property defined in the form fragment, T5 raises an exception : it cant find the parameter from the context.
Both setters are written in the same class.
Sorry the first description was not very precise. I hope this one is better, please let me know if you need any more details.
> Context lost in a form fragment in a property editor component
> --------------------------------------------------------------
>
> Key: TAPESTRY-2430
> URL: https://issues.apache.org/jira/browse/TAPESTRY-2430
> Project: Tapestry
> Issue Type: Bug
> Components: Core Components
> Affects Versions: 5.0.12
> Reporter: José Paumard
>
> 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)
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tapestry.apache.org
For additional commands, e-mail: dev-help@tapestry.apache.org