[ 
https://issues.apache.org/jira/browse/WW-4166?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14084555#comment-14084555
 ] 

zhouyanming commented on WW-4166:
---------------------------------

cache will improve 100x performance, and I rewrited your code, please check it.
Component.java
{code:java}
    /**
     * Checks if provided name is a valid tag's attribute
     *
     * @param attrName String name of attribute
     * @return true if attribute with the same name was already defined
     */
    public boolean isValidTagAttribute(String attrName) {
        return getStandardAttributes().contains(attrName);
    }

    /**
     * If needed caches all methods annotated by given annotation to avoid 
further scans
     */
    protected List<String> getStandardAttributes() {
        Class clz = getClass();
        List<String> standardAttributes = standardAttributesMap.get(clz);
        if (standardAttributes == null) {
            Collection<Method> methods = 
AnnotationUtils.getAnnotatedMethods(clz, StrutsTagAttribute.class);
            standardAttributes = new ArrayList<String>(methods.size());
            for(Method m : methods)
                
standardAttributes.add(StringUtils.uncapitalize(m.getName().substring(3)));
            standardAttributesMap.putIfAbsent(clz, standardAttributes);
        }
        return standardAttributes;
    }
    
    private static ConcurrentHashMap<Class, List<String>> standardAttributesMap 
= new ConcurrentHashMap<Class, List<String>>();
{code}


> Allow "class" attribute on Struts tags
> --------------------------------------
>
>                 Key: WW-4166
>                 URL: https://issues.apache.org/jira/browse/WW-4166
>             Project: Struts 2
>          Issue Type: Improvement
>          Components: Other
>            Reporter: Eric Lentz
>            Assignee: Lukasz Lenart
>            Priority: Trivial
>             Fix For: 2.3.18
>
>
> In building a JSP, and working on web related things outside of the Java 
> environment, there are lots of tags which all receive the "class" attribute. 
> The Struts developer must _remember_ to call the attribute cssClass instead. 
> Typing muscle memory drives me to half of the time typing "class" instead, 
> which leads to HTML which reads, 'class="class java.util.HashMap"'
> Why not just allow "class" like the rest of the HTML world? Why do we need to 
> be different? I have a billion things to remember when web developing, this 
> shouldn't be one of them.
> We don't even have to to deprecate or obsolete cssClass, just also allow 
> "class"... please!



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to