struts-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Mike Calmus (JIRA)" <j...@apache.org>
Subject [jira] Commented: (WW-2480) Some OGNL expressions do not work with DateTimePicker component
Date Mon, 02 Jun 2008 15:35:05 GMT

    [ https://issues.apache.org/struts/browse/WW-2480?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=44003#action_44003
] 

Mike Calmus commented on WW-2480:
---------------------------------

The UIBena parent class does the following:

        String name = null;
        String providedLabel = null;

        if (this.key != null) {

            if(this.name == null) {
                this.name = key;
            }

            if(this.label == null) {
                // lookup the label from a TextProvider (default value is the key)
                providedLabel = TextProviderHelper.getText(key, key, stack);
            }

        }

        if (this.name != null) {
            name = findString(this.name);
            addParameter("name", name);
        }

As you can see the "name" that gets put into the value map is different than the value stored
for the class member variable. The key here is that we need name after it has been run through
the findString method. I did the change to DateTimePicker because I figured there must be
some reason for this behavior and didn't want to take a chance on breaking something elsewhere
by changing UIBean itself.

> Some OGNL expressions do not work with DateTimePicker component
> ---------------------------------------------------------------
>
>                 Key: WW-2480
>                 URL: https://issues.apache.org/struts/browse/WW-2480
>             Project: Struts 2
>          Issue Type: Bug
>          Components: Plugin - Dojo Tags
>    Affects Versions: 2.0.11, 2.0.11.1, 2.0.12, 2.1.0, 2.1.1
>            Reporter: Mike Calmus
>            Priority: Blocker
>
> Certain expressions do not parse when using the DateTimePicker tag. This same expression
works fine with the textfield tag:
> The following line throws a parse exception.
>         <s:datetimepicker name="aList.get(%{#attr['item_rowNum'] - 1}).startDate"
/>
> whereas this works fine:
>         <s:textfield name="aList.get(%{#attr['item_rowNum'] - 1}).startDate" />
> The problem seems to be that the latter uses the standard UIBean evaluateParams()  implementation
whereas the former overrides it. This caused a problem with a third-party component as well.
Based upon code usage, I believe this may affect other components as well. The following patch
should fix both built-in as well as third-party modules:
> Index: core/src/main/java/org/apache/struts2/components/UIBean.java
> ===================================================================
> --- core/src/main/java/org/apache/struts2/components/UIBean.java        (revision 620628)
> +++ core/src/main/java/org/apache/struts2/components/UIBean.java        (working copy)
> @@ -588,8 +588,6 @@
>          addParameter("templateDir", getTemplateDir());
>          addParameter("theme", getTheme());
> -        String name = null;
> -
>          if (this.key != null) {
>             if(this.name == null) {
> @@ -603,8 +601,8 @@
>          }
>          if (this.name != null) {
> -            name = findString(this.name);
> -            addParameter("name", name);
> +            this.name = findString(this.name);
> +            addParameter("name", this.name);
>          }
>          if (label != null) {

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message