Bug 55642

Summary: TagPluginManager isConstantAttribute broken
Product: Tomcat 7 Reporter: Pavel Cibulka <pavelcibulka>
Component: JasperAssignee: Tomcat Developers Mailing List <dev>
Severity: normal    
Priority: P2    
Version: 7.0.42   
Target Milestone: ---   
Hardware: All   
OS: All   

Description Pavel Cibulka 2013-10-09 13:02:21 UTC
Function isConstantAttribute in TagPluginManager seems to be be broken.
For value "order.status" it returns false. And for value "${order.state.name}" it returns true. According to javadoc it should be exact opposite.

Problem seems to be in Node.isLiteral function. "el!= null" should probably be "el== null" But this function is being used elsewhere.

* @return true if the attribute is specified and its value is a
*         translation-time constant.
public boolean TagPluginManager.isConstantAttribute(String attribute){
    Node.JspAttribute attr = getNodeAttribute(attribute);
    if (attr == null)
        return false;
    return attr.isLiteral();
* @return true if the value is a string literal known at translation
*         time.
public boolean isLiteral() {
    return !expression && (el != null) && !namedAttribute;
Comment 1 Mark Thomas 2013-10-09 14:39:32 UTC
The function is being used elsewhere but it is returning the wrong value there too.

I have fixed this in 8.0.x for 8.0.0-RC4 and 7.0.x for 7.0.46.