code: protected Object findValue(String expr, String field, String errorMsg) {
      if (expr == null) {
        throw fieldError(field, errorMsg, null);
      } else {
        Object value = null;
        Exception problem = null;
        try {
          value = findValue(expr);
        } catch (Exception e) {
          problem = e;
        }
  
        if (value == null) { throw fieldError(field, errorMsg, problem); }
  
        return value;
      }
    }
docs: Evaluates the OGNL stack to find an Object value.
  <p/>
  Function just like <code>findValue(String)</code> except that if the given expression is
  <tt>null</tt/> a error is logged and a <code>RuntimeException</code> is thrown constructed with
  a messaged based on the given field and errorMsg paramter.
  
  @param expr
  OGNL expression.
  @param field
  field name used when throwing <code>RuntimeException</code>.
  @param errorMsg
  error message used when throwing <code>RuntimeException</code> .
  @return the Object found, is never <tt>null</tt>.
  @throws StrutsException
  is thrown in case of not found in the OGNL stack, or
  expression is <tt>null</tt>.