title: Upgrade to struts 2.3.15.1
body: <p>After upgrade to struts <strong><em>2.3.15.1</em></strong> from <strong><em>2.2.1.1</em></strong> [Struts S2-016]</p>
  
  <pre><code>    &lt;dependency&gt;
          &lt;groupId&gt;org.apache.struts&lt;/groupId&gt;
          &lt;artifactId&gt;struts2-core&lt;/artifactId&gt;
          &lt;version&gt;2.3.15.1&lt;/version&gt;
      &lt;/dependency&gt;
      &lt;dependency&gt;
          &lt;groupId&gt;org.apache.struts&lt;/groupId&gt;
          &lt;artifactId&gt;struts2-junit-plugin&lt;/artifactId&gt;
          &lt;version&gt;2.3.15.1&lt;/version&gt;
          &lt;exclusions&gt;
              &lt;exclusion&gt;
                  &lt;groupId&gt;junit&lt;/groupId&gt;
                  &lt;artifactId&gt;junit&lt;/artifactId&gt;
              &lt;/exclusion&gt;
          &lt;/exclusions&gt;
          &lt;scope&gt;test&lt;/scope&gt;
      &lt;/dependency&gt;
      &lt;dependency&gt;
          &lt;groupId&gt;org.apache.struts.xwork&lt;/groupId&gt;
          &lt;artifactId&gt;xwork-core&lt;/artifactId&gt;
          &lt;version&gt;2.3.15.1&lt;/version&gt;
          &lt;type&gt;pom&lt;/type&gt;
      &lt;/dependency&gt;
      &lt;dependency&gt;
          &lt;groupId&gt;org.apache.struts&lt;/groupId&gt;
          &lt;artifactId&gt;struts2-spring-plugin&lt;/artifactId&gt;
          &lt;version&gt;2.3.15.1&lt;/version&gt;
          &lt;type&gt;jar&lt;/type&gt;
          &lt;scope&gt;compile&lt;/scope&gt;
      &lt;/dependency&gt;
  </code></pre>
  
  <p>My app can not start correctly and am getting multiple errors !!!!</p>
  
  <pre><code>StandardContext.filterStart : Exception starting filter struts2
  java.lang.NoSuchMethodError: ognl.SimpleNode.isEvalChain(Lognl/OgnlContext;)Z
  </code></pre>
  
  <p>after my investigation it seems that i should also change the <strong><em>ognl</em></strong> version from </p>
  
  <pre><code>&lt;dependency&gt;
              &lt;groupId&gt;ognl&lt;/groupId&gt;
              &lt;artifactId&gt;ognl&lt;/artifactId&gt;
              &lt;version&gt;3.0&lt;/version&gt;
          &lt;/dependency&gt;
  </code></pre>
  
  <p>to</p>
  
  <pre><code>&lt;dependency&gt;
              &lt;groupId&gt;ognl&lt;/groupId&gt;
              &lt;artifactId&gt;ognl&lt;/artifactId&gt;
              &lt;version&gt;3.0.4&lt;/version&gt;
          &lt;/dependency&gt; 
  </code></pre>
  
  <p>every thing seems to be perfect until i have this error when i access to my login page </p>
  
  <pre><code>ApplicationDispatcher.invoke : Servlet.service() for servlet jsp threw exception
  tag 'select', field 'list', name 'locale': The requested list key 'languages' could not be resolved as a collection/array/map/enumeration/iterator type. Example: people or people.{name} - [unknown location]
          at org.apache.struts2.components.Component.fieldError(Component.java:240)
  </code></pre>
  
  <p>it seems that struts can't any more recognize the list of language which was works perfect !!!</p>
  
  <pre><code>&lt;action name="Login" class="LoginAction"&gt;
              &lt;result name="input"&gt;/LoginForm.jsp&lt;/result&gt;
              &lt;result name="success" type="redirect"&gt;FillMe.do&lt;/result&gt;
          &lt;/action&gt;
  </code></pre>
  
  <p>Jsp page</p>
  
  <pre><code>&lt;form id="LoginForm" class="c2" method="post" action="Login.do"&gt;
          &lt;div class="c1"&gt;
              &lt;label for="login"&gt;&lt;s:text name="Users.Login"/&gt; :&lt;/label&gt;
              &lt;input type="text" id="login" name="login" maxlength="64"/&gt;
          &lt;/div&gt;
          &lt;div class="c1"&gt;
              &lt;label for="password"&gt;&lt;s:text name="Users.Password"/&gt; :&lt;/label&gt;
              &lt;input type="password" id="password" name="password" maxlength="64" maxlength="32"/&gt;
          &lt;/div&gt;
          &lt;div class="c1"&gt;
              &lt;label for="locale"&gt;&lt;s:text name="Users.Language"/&gt; :&lt;/label&gt;
              &lt;s:select id="locale" name="locale" list="languages" /&gt;
          &lt;/div&gt;
  
      &lt;/form&gt; 
  </code></pre>
  
  <p>my list </p>
  
  <pre><code>public Map&lt;String, String&gt; getLanguages() {
          LinkedHashMap&lt;String, String&gt; languages = new LinkedHashMap&lt;String, String&gt;();
  
              Iterator&lt;String&gt; it = Manager.getManager(current).getLanguagesList().iterator();
              while (it.hasNext()) {
                  String lang = it.next();
                  languages.put(lang, getText("Users.Language." + lang.substring(0, 2).toUpperCase()));
          }
          return languages;
      }
  </code></pre>