2015-06-09 10 views
7

Desidero avere un tag con attributi dinamici, come semplici tag html, ad es. qualcosa di simile:Attributi dinamici in un tag jsp

<tags:superTag dynamicAttribute1="value" someOtherAttribute="valueOfSomeOther"/> 

E nella mia implementazione di tag voglio avere qualcosa di simile:

public class DynamicAttributesTag { 

    private Map<String,String> dynamicAttributes; 

    public Map<String, String> getDynamicAttributes() { 
     return dynamicAttributes; 
    } 

    public void setDynamicAttributes(Map<String, String> dynamicAttributes) { 
     this.dynamicAttributes = dynamicAttributes; 
    } 

    @Override 
    protected int doTag() throws Exception { 
     for (Map.Entry<String, String> dynamicAttribute : dynamicAttributes.entrySet()) { 
      // do something 
     } 
     return 0; 
    } 
} 

Voglio sottolineare che questi attributi dinamici stanno per essere scritto da mani un jsp, non appena passato come Map come ${someMap}. Quindi c'è un modo per raggiungere questo obiettivo?

+1

Se ho capito bene, questo potrebbe essere fatto con un tag '' nel TLD. Per "esempio di attributi dinamici di jsp", Google ti offre diversi risultati promettenti. – icke

+0

@ icke Sì, è esattamente ciò di cui ho bisogno. Grazie mille. Puoi aggiungerlo come risposta e lo accetterò, ma potresti anche fornire qualche esempio per i futuri lettori? Fondamentalmente si tratta solo di implementare l'interfaccia DynamicAttributes e tag in TLD. –

risposta

4

Si dovrà abilitare gli attributi dinamici nel vostro TLD, in questo modo:

<tag> 
    ... 
    <dynamic-attributes>true</dynamic-attributes> 
</tag> 

e quindi avere la classe tag handler implementare l'interfaccia DynamicAttributes:

public class DynamicAttributesTag extends SimpleTagSupport implements DynamicAttributes { 
    ... 
    public void setDynamicAttribute(String uri, String localName, Object value) throws JspException { 
     // This gets called every time a dynamic attribute is set 
     // You could add the (localName,value) pair to your dynamicAttributes map here 
    } 
    ... 
} 
Problemi correlati