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

Musachy Barroso resolved WW-3004.
---------------------------------

    Resolution: Won't Fix

Closing dojo related tickets as "Won't fix". if you have a patch for this 
issue, feel free to attach it and re-open.

> Inconsistency on field value evaluation through field name between 
> datetimepicker tag and other tags such as select  and textfield
> ----------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: WW-3004
>                 URL: https://issues.apache.org/struts/browse/WW-3004
>             Project: Struts 2
>          Issue Type: Bug
>          Components: Core Actions
>    Affects Versions: 2.0.14
>            Reporter: Qiang Zheng
>
> The way evaluate field value through field name is different between 
> datetimepicker tag and other tags such as select and textfield.
> In UIBean.java,
> --------------- it evaluate name first and assign the name value to local 
> vairable String name defined in evaluateParams()--------------
>  if (this.name != null) {
>             name = findString(this.name);
>             addParameter("name", name);
>         }
> --------------------------Then it will look for value from stack based on 
> that name variable which was evaluated from this.name---------
> -------------------------- So nameValue will hold the field value by evaluate 
> object path generated above --------------------------
>  String expr = name;
>                         if (altSyntax()) {
>                             expr = "%{" + expr + "}";
>                         }
>                         addParameter("nameValue", findValue(expr, 
> valueClazz));
> --------------------------------------------------------------------------------------------------------------
> But in DateTimePicker.java,
> ------------------ The name assigned to expr is actually proptected property 
> "name" from UIBean which holds raw string literal of expression 
> ---------------
> ------------------ In this case, the nameValue doesn't hold value of field 
> but the value of name expression------------------------------------
>  if(parameters.containsKey("value")) {
>             parameters.put("nameValue", format(parameters.get("value")));
>         } else {
>             if(name != null) {
>                 String expr = name;
>                 if(altSyntax()) {
>                     expr = "%{" + expr + "}";
>                 }
>                 addParameter("nameValue", format(findValue(expr)));
>             }
>         }
> -------------------------------------------------------------------------------------------------------
> So in our case, when we pass in "%{#attr.name}" to name attribute of 
> datetimepicker struts tag, the nameValue of that field becomes object path 
> "aaa.bbb.ccc" which is wrong . But if we pass "%{#attr.name}"  to strusts 
> select tag or textfield tag, the nameValue is the value of "aaa.bbb.ccc" 
> which is correct. 
> nameValue will get assigned to value attribute eventually in freemarker 
> script.
> Please fix that in DateTimePicker.java and other similar places if any.

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

Reply via email to