Uploaded image for project: 'Struts 2'
  1. Struts 2
  2. WW-1747

select tag doesn't work with "multiple" if list keys are not strings

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 2.0.6
    • 2.0.7, 2.1.0
    • Plugin - Tags
    • None

    Description

      This is similar to WW-1711, but the fix included there doesn't handle the case where the select tag has multiple="true" and the listKey is not a string. In some cases, this can result in a freemarker syntax error:

      Expected number, date, or string. parameters.nameValue evaluated instead to freemarker.ext.beans.ArrayModel

      I'll try to create a new test case that fails (the current multiple select test passes in a array of Strings), then I'll attempt to find a more complete fix. In the meantime, if anyone needs to get this working, a quick workaround is to override the template/simple/select.ftl file and change this:

      <#if tag.contains(parameters.nameValue, itemKey) == true || (parameters.nameValue?exists && parameters.nameValue?string == itemKey)>

      to this:

      <#if tag.contains(parameters.nameValue, itemKey) == true ||
      (parameters.nameValue?exists && (parameters.nameValue?is_string || parameters.nameValue?is_number) &&
      parameters.nameValue?string == itemKey) >

      It still doesn't correctly pre-select values if the listKey isn't a string, but at least it avoids the freemarker error. I'm not convinced that this is the right long-term solution, so I didn't make it a source patch. It may be useful to do so, though, if this doesn't get fixed soon.

      I think the correct fix here (and the cleaner fix for WW-1711) will be to create a new contains() method that checks objects.toString() against the strings (right now it only matches if the types match). But that's currently done in OGNL. Maybe we need our own contains()?

      Attachments

        1. WW-1747.patch
          0.6 kB
          Stuart Piltch

        Activity

          People

            rgielen René Gielen
            piltch Stuart Piltch
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: