Hello

I found quite a nice component named ShowErrors from helloworld-taplet
example coming with tapestry 4.0.2 edition, but found it giving quite an
unexpected result when submitting incomplete (or invalid) form the second
time.

Namely there will come a NullPointerException. Could anyone verify it or
explain whats wrong with the following?
Please note that error messages still get displayed the first time - the
exception only comes after submitting the form once more with invalid data.

PS! I'm not subscribed to the list, so I would appreciate adding
[EMAIL PROTECTED] to bcc while answering.

The component referenced through a page like following:
   <bean name="delegate" class="
org.apache.tapestry.valid.ValidationDelegate"/>
   <component id="errorList" type="ErrorList">
       <binding name="delegate" value="ognl:beans.delegate"/>
   </component>


ErrorList.jwc

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE component-specification PUBLIC
 "-//Apache Software Foundation//Tapestry Specification 4.0//EN"
 "http://jakarta.apache.org/tapestry/dtd/Tapestry_4_0.dtd";>
<component-specification allow-informal-parameters="no" allow-body="no">
   <parameter name="delegate" required="true"/>
   <property name="errorRenderer"/>
   <component id="if" type="If">
       <binding name="condition" value=" delegate.hasErrors"/>
       <binding name="element" value="literal:ul"/>
   </component>
   <component id="loop" type="For">
       <binding name="source" value="
delegate.fieldTracking.{?inError}.{errorRenderer}"/>
       <binding name="value" value="errorRenderer"/>
       <binding name="element" value="literal:li"/>
   </component>
   <component id="error" type="Delegator">
       <binding name="delegate" value="ognl:errorRenderer" />
   </component>
</component-specification>


ErrorList.html

<ul jwcid="if">
 <li jwcid="loop">
     <span jwcid="error"/>
 </li>
</ul>


Finally the error report for the NullPonterException after submitting
invalid form the second time

org.apache.tapestry.BindingException
Unable to read OGNL expression '<parsed OGNL expression>' of
[EMAIL PROTECTED]/errorList]:
java.lang.NullPointerException
binding:     ExpressionBinding[BookEdit/errorList
delegate.fieldTracking.{?inError}.{errorRenderer}]
location:     context:/WEB-INF/ErrorList.jwc, line 31, column 86
26    <component id="if" type="If">
27    <binding name="condition" value="delegate.hasErrors"/>
28    <binding name="element" value="literal:ul"/>
29    </component>
30    <component id="loop" type="For">
31    <binding name="source"
value="delegate.fieldTracking.{?inError}.{errorRenderer}"/>
32    <binding name="value" value="errorRenderer"/>
33    <binding name="element" value="literal:li"/>
34    </component>
35    <component id="error" type="Delegator">
36    <binding name="delegate" value="ognl:errorRenderer" />

org.apache.hivemind.ApplicationRuntimeException
Unable to read OGNL expression '<parsed OGNL expression>' of
[EMAIL PROTECTED]/errorList]:
java.lang.NullPointerException
component:     [EMAIL PROTECTED]/errorList]
location:     context:/WEB-INF/BookEdit.page, line 20, column 45
15    <binding name="listener" value="ognl:listeners.bookFormSubmit" />
16    <binding name="delegate" value="ognl:beans.delegate" />
17    <!-- binding name="clientValidationEnabled" value="true"/ -->
18    </component>
19
20    <component id="errorList" type="ErrorList">
21    <binding name="delegate" value="ognl:beans.delegate"/>
22    </component>
23
24    <component id="titleLabel" type="FieldLabel">
25    <binding name="field" value="component:title"/>

java.lang.NullPointerException
Stack Trace:

   * ognl.OgnlRuntime$ClassCache.get(OgnlRuntime.java:144)
   * ognl.OgnlRuntime.getHandler(OgnlRuntime.java:1551)
   * ognl.OgnlRuntime.getElementsAccessor(OgnlRuntime.java:1518)
   * ognl.ASTSelect.getValueBody (ASTSelect.java:53)
   * ognl.SimpleNode.evaluateGetValueBody(SimpleNode.java:170)
   * ognl.SimpleNode.getValue(SimpleNode.java:210)
   * ognl.ASTChain.getValueBody(ASTChain.java:109)
   * ognl.SimpleNode.evaluateGetValueBody (SimpleNode.java:170)
   * ognl.SimpleNode.getValue(SimpleNode.java:210)
   * ognl.Ognl.getValue(Ognl.java:333)
   * ognl.Ognl.getValue(Ognl.java:310)
   * org.apache.tapestry.services.impl.ExpressionEvaluatorImpl.readCompiled(
ExpressionEvaluatorImpl.java:91)
   *
$ExpressionEvaluator_10c8ac5eb01.readCompiled($ExpressionEvaluator_10c8ac5eb01.java)
   * org.apache.tapestry.binding.ExpressionBinding.resolveExpression(
ExpressionBinding.java :110)
   * org.apache.tapestry.binding.ExpressionBinding.getObject(
ExpressionBinding.java:103)
   * org.apache.tapestry.components.ForBean.evaluateSourceIterator(
ForBean.java:603)
   * org.apache.tapestry.components.ForBean$ReadSourceDataIterator .<init>(
ForBean.java:287)
   * org.apache.tapestry.components.ForBean.getStoredData(ForBean.java:278)
   * org.apache.tapestry.components.ForBean.getData(ForBean.java:256)
   * org.apache.tapestry.components.ForBean.renderComponent (ForBean.java
:107)
   * org.apache.tapestry.AbstractComponent.render(AbstractComponent.java
:617)
   * org.apache.tapestry.AbstractComponent.renderBody(
AbstractComponent.java:434)
   * org.apache.tapestry.components.IfBean.renderComponent (IfBean.java:86)
   * org.apache.tapestry.AbstractComponent.render(AbstractComponent.java
:617)
   * org.apache.tapestry.BaseComponent.renderComponent(BaseComponent.java
:92)
   * org.apache.tapestry.AbstractComponent.render (AbstractComponent.java
:617)
   * org.apache.tapestry.AbstractComponent.renderBody(
AbstractComponent.java:434)
   * org.apache.tapestry.form.FormSupportImpl.rewind(FormSupportImpl.java
:564)
   * org.apache.tapestry.form.Form.renderComponent (Form.java:226)
   * org.apache.tapestry.AbstractComponent.render(AbstractComponent.java
:617)
   * org.apache.tapestry.form.Form.rewind(Form.java:327)
   * org.apache.tapestry.engine.RequestCycle.rewindForm(RequestCycle.java:439)
   * org.apache.tapestry.form.Form.trigger(Form.java:338)
   * org.apache.tapestry.engine.DirectService.triggerComponent(
DirectService.java:146)
   * org.apache.tapestry.engine.DirectService.service(DirectService.java:132)
   * $IEngineService_10c8ac5ea79.service($IEngineService_10c8ac5ea79.java)
   * org.apache.tapestry.services.impl.EngineServiceOuterProxy.service(
EngineServiceOuterProxy.java:66)
   * org.apache.tapestry.engine.AbstractEngine.service (AbstractEngine.java
:248)
   * org.apache.tapestry.services.impl.InvokeEngineTerminator.service(
InvokeEngineTerminator.java:60)
   *
$WebRequestServicer_10c8ac5ea57.service($WebRequestServicer_10c8ac5ea57.java)
   *
$WebRequestServicer_10c8ac5ea53.service($WebRequestServicer_10c8ac5ea53.java)
   *
org.apache.tapestry.services.impl.WebRequestServicerPipelineBridge.service(
WebRequestServicerPipelineBridge.java:56)
   *
$ServletRequestServicer_10c8ac5ea37.service($ServletRequestServicer_10c8ac5ea37.java)

   * org.apache.tapestry.request.DecodedRequestInjector.service(
DecodedRequestInjector.java:55)
   *
$ServletRequestServicerFilter_10c8ac5ea33.service($ServletRequestServicerFilter_10c8ac5ea33.java)
   *
$ServletRequestServicer_10c8ac5ea39.service($ServletRequestServicer_10c8ac5ea39.java)

   * org.apache.tapestry.multipart.MultipartDecoderFilter.service(
MultipartDecoderFilter.java:52)
   *
$ServletRequestServicerFilter_10c8ac5ea31.service($ServletRequestServicerFilter_10c8ac5ea31.java)
   *
$ServletRequestServicer_10c8ac5ea39.service($ServletRequestServicer_10c8ac5ea39.java)

   * org.apache.tapestry.services.impl.SetupRequestEncoding.service(
SetupRequestEncoding.java:53)
   *
$ServletRequestServicerFilter_10c8ac5ea35.service($ServletRequestServicerFilter_10c8ac5ea35.java)
   *
$ServletRequestServicer_10c8ac5ea39.service($ServletRequestServicer_10c8ac5ea39.java)

   *
$ServletRequestServicer_10c8ac5ea2b.service($ServletRequestServicer_10c8ac5ea2b.java)
   * org.apache.tapestry.ApplicationServlet.doService(
ApplicationServlet.java:123)
   * org.apache.tapestry.ApplicationServlet.doPost (ApplicationServlet.java
:168)
   * javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
   * javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
   * org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (
ApplicationFilterChain.java:252)
   * org.apache.catalina.core.ApplicationFilterChain.doFilter(
ApplicationFilterChain.java:173)
   * org.apache.catalina.core.StandardWrapperValve.invoke(
StandardWrapperValve.java:213)
   * org.apache.catalina.core.StandardContextValve.invoke(
StandardContextValve.java:178)
   * org.apache.catalina.core.StandardHostValve.invoke(
StandardHostValve.java:126)
   * org.apache.catalina.valves.ErrorReportValve.invoke (
ErrorReportValve.java:105)
   * org.apache.catalina.core.StandardEngineValve.invoke(
StandardEngineValve.java:107)
   * org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java
:148)
   * org.apache.coyote.http11.Http11Processor.process (Http11Processor.java
:869)
   *
org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection
(Http11BaseProtocol.java:664)
   * org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(
PoolTcpEndpoint.java :527)
   * org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(
LeaderFollowerWorkerThread.java:80)
   * org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(
ThreadPool.java:684)
   * java.lang.Thread.run (Unknown Source)





--
Martin

Reply via email to