You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tapestry.apache.org by "Howard M. Lewis Ship (JIRA)" <ji...@apache.org> on 2013/07/25 01:49:48 UTC

[jira] [Closed] (TAP5-1895) ValidationDecorator.insideLabel(...) is called after the removal of PropertyContext in PropertyEditor

     [ https://issues.apache.org/jira/browse/TAP5-1895?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Howard M. Lewis Ship closed TAP5-1895.
--------------------------------------

       Resolution: Won't Fix
    Fix Version/s:     (was: 5.3.3)
                       (was: 5.4)
         Assignee: Howard M. Lewis Ship

ValidationDecorator is deprecated in 5.4 and will soon be removed.
                
> ValidationDecorator.insideLabel(...) is called after the removal of PropertyContext in PropertyEditor
> -----------------------------------------------------------------------------------------------------
>
>                 Key: TAP5-1895
>                 URL: https://issues.apache.org/jira/browse/TAP5-1895
>             Project: Tapestry 5
>          Issue Type: Bug
>          Components: tapestry-core
>    Affects Versions: 5.3.2
>            Reporter: Vladimir Velikiy
>            Assignee: Howard M. Lewis Ship
>              Labels: label, validationdecorator
>         Attachments: TAP5-1895.patch
>
>
> I want to add css class to label if field is required in my custom ValidationDecorator:
>    
> @Override
>     public void insideLabel(Field field, Element labelElement) {
>         if(field == null) return;
>         if(field.isRequired()) {
>             labelElement.addClassName("required-label");
>         }
>         if(inError(field)) {
>             labelElement.addClassName(CSSClassConstants.ERROR);
>         }
>     }
> It does not work with BeanEditForm component. The problem arises because method ValidationDecorator.insideLabel(...) is called in Label component after removal of PropertyContext from Environment (PropertyContext is needed for get the validator and call isRequired() method):
> @HeartbeatDeferred
>     private void updateAttributes()
>     {
>         String fieldId = field.getClientId();
>         labelElement.forceAttributes("for", fieldId);
>         decorator.insideLabel(field, labelElement);
>     }
> The solution for this problem would be to move the call to decorator.insideLabel (field, labelElement) to the beginRender method in Label component. Label decorating does not need to wait for rendering field element and only needs a label element.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira