tapestry-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Howard M. Lewis Ship (JIRA)" <tapestry-...@jakarta.apache.org>
Subject [jira] Updated: (TAPESTRY-556) Literal bindings in template override bindings in specification for the same informal parameter
Date Fri, 09 Sep 2005 22:04:30 GMT
     [ http://issues.apache.org/jira/browse/TAPESTRY-556?page=all ]

Howard M. Lewis Ship updated TAPESTRY-556:
------------------------------------------

    Summary: Literal bindings in template override bindings in specification for the same
informal parameter  (was: a binding in template overrides another binding in specification
for the same informal parameter)

> Literal bindings in template override bindings in specification for the same informal
parameter
> -----------------------------------------------------------------------------------------------
>
>          Key: TAPESTRY-556
>          URL: http://issues.apache.org/jira/browse/TAPESTRY-556
>      Project: Tapestry
>         Type: Bug
>     Versions: 4.0
>  Environment: WinXP
>     Reporter: Kent Tong
>     Assignee: Howard M. Lewis Ship

>
> If there is a (literal) binding in the template (for WYSIWYG purpose) for an informal
parameter, then even if another (ognl) binding is specified in the specification for the same
parameter, the literal binding will win. For example:
> Test.html:
> <span jwcid="sample" style="color: red">foo</span>  <!-- this binding
will win -->
> Test.page:
> <page-specification class="Test">
>   <component id="sample" type="Any">
>      <binding name="style" value="ognl:color"/>  <!-- this binding will be overridden
-->
>   </component>
> </page-specification>
> Test.java
> class Test {
>   public String getColor() {  //this method is never called.
>     ...
>   }
> }
> The bug is in the validate() method in ComponentTemplateLoaderLogic. This method only
checks for: 1) formal parameter; 2) reserved parameter; 3) allow-informal-parameter is no.
It doesn't check if a binding has been provided for an informal parameter in the specification.
> public class ComponentTemplateLoaderLogic 
> {
>     private boolean validate(IComponent component, IComponentSpecification spec, String
name,
>             IBinding binding)
>     {
>         boolean literal = binding instanceof LiteralBinding;
>         boolean isFormal = (spec.getParameter(name) != null);
>         if (isFormal)
>         {
>             if (component.getBinding(name) != null)
>             {
>                 if (literal)
>                     return false;
>                 throw new ApplicationRuntimeException(ImplMessages.dupeTemplateBinding(
>                         name,
>                         component,
>                         _loadComponent), component, binding.getLocation(), null);
>             }
>             return true;
>         }
>         if (!spec.getAllowInformalParameters())
>         {
>             if (literal)
>                 return false;
>             throw new ApplicationRuntimeException(ImplMessages.templateBindingForInformalParameter(
>                     _loadComponent,
>                     name,
>                     component), component, binding.getLocation(), null);
>         }
>         if (spec.isReservedParameterName(name))
>         {
>             if (literal)
>                 return false;
>             throw new ApplicationRuntimeException(ImplMessages.templateBindingForReservedParameter(
>                     _loadComponent,
>                     name,
>                     component), component, binding.getLocation(), null);
>         }
>         return true;
>     }
> }

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira


---------------------------------------------------------------------
To unsubscribe, e-mail: tapestry-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tapestry-dev-help@jakarta.apache.org


Mime
View raw message