Per the javadoc at http://docs.oracle.com/javaee/7/api/javax/el/ELProcessor.html it specifies that defineFunction(String prefix, String function, String className, String method) should use the method name as function name when the function argument is empty ("") The current code stores function names as ":" so it cannot locate custom functions like the following ${length(obj)} which would be queried for as ":length" Replace code: if (method.getName().equals(sig.getName())) { if (sig.getParamTypeNames() == null) { With: if (method.getName().equals(sig.getName())) { if (function.length() == 0) function = method.getName(); if (sig.getParamTypeNames() == null) { The two new lines of code ensure that when function is blank it the method name will be used as the function name
Thanks for the report. This has been fixed in 8.0.x for 8.0.9 onwards.