[jbossseam-issues] [JBoss JIRA] Commented: (JBSEAM-2133) inline EL in component property value not properly detected

Dan Allen (JIRA) jira-events at lists.jboss.org
Mon Sep 22 14:14:31 EDT 2008


    [ https://jira.jboss.org/jira/browse/JBSEAM-2133?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12430666#action_12430666 ] 

Dan Allen commented on JBSEAM-2133:
-----------------------------------

I believe that I have a perfect solution for this problem. If the entire value is a single EL value expression, then we evaluate it when setting the bean property. We will call this a component reference (since that is the only way to refer to a component in the Seam component descriptor). If the value has mixed content, then it will not be evaluated before assigning to the property. This gives the developer the choice to evaluate it during the @Create method or at a later time. This is mostly how it works today, except that if the value starts with #{ we evaluate it, even if the content is mixed, so that is where the inconsistent behavior comes in.

In an ideal world, we would always interpolate the value unless the target property's type is ValueExpression. However, if we make that change I fear we will break a lot of people's applications. We will also need to change the restrictions property on the Query component to be an array of ValueExpression objects instead of strings.

> inline EL in component property value not properly detected
> -----------------------------------------------------------
>
>                 Key: JBSEAM-2133
>                 URL: https://jira.jboss.org/jira/browse/JBSEAM-2133
>             Project: Seam
>          Issue Type: Bug
>          Components: Core
>    Affects Versions: 2.0.0.CR2
>            Reporter: Dan Allen
>            Assignee: Dan Allen
>             Fix For: 2.1.0.CR1
>
>         Attachments: JBSEAM-2133-v1.txt
>
>
> Currently, the EL notation in a property is only being evaluated if the property starts with "#{". There are two problems with this assumption.
> 1. Inline EL can only be used if the property starts with an expression (i.e. <property name="message">#{applicationName} is a cool application</property>)
> 2. There is no way to escape EL so that is is evaluated by the property accepting the string (rather than when the value is assigned).
> The correct behavior would be to treat the property value as a value expression if it CONTAINS "#{". The benefits are two fold:
> 1. A property value can use inline EL that is evaluated when the property value is set (see above)
> 2. The resolved value of the property can be EL (delayed EL) that is to be interpreted by the component as needed. This is done by escaping the EL per the unified EL spec (i.e. <property name="created-message">The user \#{user.name} has been created!</property)
> Surprisingly, everything is already in place. All that needs to happen is the check for EL needs to change from "startsWith" to "contains".

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

        



More information about the seam-issues mailing list