You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@struts.apache.org by "Jeromy Evans (JIRA)" <ji...@apache.org> on 2008/07/01 10:39:06 UTC

[jira] Closed: (WW-2703) TextField tag renders with wrong NAME value (OGNL not evaluated?)

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

Jeromy Evans closed WW-2703.
----------------------------

    Resolution: Not A Problem

Looks like a bug, but it's not.  

You need to instruct OGNL that the name and id expressions need to be partially evaluated (to get the index).  The value attribute is correctly fully evaluated.

ie.
 <s:textfield name="group.translations[%{translatedLang.langId}].value" value="group.translations[translatedLang.langId].value/> 

That reads: the name to use is "group.translations[x].value" where x is evaluated, but the value is the result of evaluating the full expression "group.translations[translatedLan.langId].value" (inside the brackets first, then outside).

Please ask further questions in the struts-user list.

> TextField tag renders with wrong NAME value (OGNL not evaluated?)
> -----------------------------------------------------------------
>
>                 Key: WW-2703
>                 URL: https://issues.apache.org/struts/browse/WW-2703
>             Project: Struts 2
>          Issue Type: Bug
>          Components: Expression Language, Plugin - Tags
>    Affects Versions: 2.1.1
>         Environment: BEA Weblogic 10, jdk 1.5.0_06
>            Reporter: kris beaumont
>
> [code]
> <s:iterator value="languages" var="lang">
>                     <s:set var="language" value="lang"/>
>                     <tr>
>                         <td>
>                             <s:text name="editGroup.data.label">
>                                 <%-- lang.value  --%>
>                                 <s:param><s:property value="value"/></s:param>
>                             </s:text>
>                         </td>
>                         <td>
>                             <s:textfield name="group.translations[translatedLang.langId].value"/>
>                         </td>
>                     </tr>
>                 </s:iterator>
> [/code]
> The problem is in:
>                             <s:textfield name="group.translations[translatedLang.langId].value"/>
> (I also tried <s:textfield name="group.translations[#lang.translatedLang.langId].value"/> ..)
> It renders to HTML as this (partially):
> <input type="text" name="group.translations[translatedLang.langId].value" value="Aanbevelingen van de raad" id="groupForm_group_translations_translatedLang_langId__value"/>
> while it should be:
> <input type="text" name="group.translations[4].value" value="Aanbevelingen van de raad" id="groupForm_group_translations_4_value"/>
> as lang is the language in the loop, lang.translatedLang is the language translated (just for clarity, languages is a collection of language translations in the user's language, translatedLang is the language being translated and it has an ID that's used as a key in the 'translations' Map ..)
> The bug is that it sets the value correctly, but that the NAME and ID are not evaluated as OGNL ...
> Even "<s:textfield key="group.translations[#lang.translatedLang.langId].value"/>" did not work.

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