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

Spurious "Unexpected Exception caught setting" message from com.opensymphony.xwork2.interceptor.ParametersInterceptor on checkboxlist tags

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Trivial
    • Resolution: Not A Problem
    • 2.3.7
    • 2.3.8
    • None
    • Centos/Apache/Tomcat

    Description

      Hello,

      There is another spurious "Unexpected Exception caught setting" message that comes from the use of the checkboxlist tag as it renders its hidden field with the id beginning with "_multiselect".

      com.opensymphony.xwork2.interceptor.ParametersInterceptor line starting 314

      for (Map.Entry<String, Object> entry : acceptableParameters.entrySet()) {
                  String name = entry.getKey();
                  Object value = entry.getValue();
                  try {
                      newStack.setParameter(name, value);
                  } catch (RuntimeException e) {
                      if (devMode) {
                          String developerNotification = LocalizedTextUtil.findText(ParametersInterceptor.class, "devmode.notification", ActionContext.getContext().getLocale(), "Developer Notification:\n{0}", new Object[]{
                                   "Unexpected Exception caught setting '" + name + "' on '" + action.getClass() + ": " + e.getMessage()
                          });
                          LOG.error(developerNotification);
                          if (action instanceof ValidationAware) {
                              ((ValidationAware) action).addActionMessage(developerNotification);
                          }
                      }
                  }
              }
      

      It may be the way I am using the checkboxlist (list of checkboxes in a table), but if I add to the id & name attributes the "cnt" number on the checkboxlist tag to match the id on the checkbox tag the error message goes away?

      ie add + "-" + Integer.toString(cnt) below:

      CheckboxListHandler (on the javatempaltes tag!)

      //Hidden input section
      a = new Attributes();
      a.add("type", "hidden")
          .add("id", "__multiselect_" + StringUtils.defaultString(StringEscapeUtils.escapeHtml4(id))+ "-" + Integer.toString(cnt))
          .add("name", "__multiselect_" + StringUtils.defaultString(StringEscapeUtils.escapeHtml4(name))+ "-" + Integer.toString(cnt))
          .add("value", "")
          .addIfTrue("disabled", disabled);
      start("input", a);
      end("input");
      

      output code:

      <input id="favourites_idEmails-1" type="checkbox" value="test" name="idEmails">
      <input id="__multiselect_favourites_idEmails-1" type="hidden" value="" name="__multiselect_idEmails-1">
      

      ####

      The freemarket template may also need the modification to the hidden field, ie add -${itemCount} to the id/name

      <input type="hidden" id="__multiselect_${parameters.id?html}-${itemCount}" 
          name="__multiselect_${parameters.name?html}-${itemCount}"
          value=""<#rt/>
      

      Cheers Greg

      Attachments

        Activity

          People

            Unassigned Unassigned
            ghuber Greg Huber
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: