2015-06-09 22 views
7

Tôi muốn có thẻ có thuộc tính động, như thẻ html đơn giản, ví dụ: một cái gì đó như thế này:Thuộc tính động trong thẻ jsp

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

Và trong việc thực hiện của tôi về thẻ tôi muốn có một cái gì đó như thế này:

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; 
    } 
} 

tôi muốn chỉ ra rằng những thuộc tính năng động sẽ được viết bằng tay trong một jsp, không chỉ được chuyển như Bản đồ như ${someMap}. Vậy có cách nào để đạt được điều này không?

+1

Nếu tôi hiểu bạn một cách chính xác, điều này có thể được thực hiện bằng thẻ '' trong TLD. Đối với "ví dụ về thuộc tính động jsp", Google cung cấp cho bạn một số kết quả đầy hứa hẹn. – icke

+0

@icke Vâng, đó là chính xác những gì tôi cần. Cảm ơn nhiều. Bạn có thể thêm nó như là một câu trả lời và tôi sẽ chấp nhận nó, nhưng bạn có thể vui lòng cung cấp một số ví dụ cho người đọc trong tương lai không? Về cơ bản nó chỉ thực hiện giao diện DynamicAttributes và tag trong TLD. –

Trả lời

4

Bạn sẽ phải kích hoạt thuộc tính động trong TLD của bạn, như vậy:

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

Và sau đó có lớp xử lý thẻ của bạn thực hiện các giao diện 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 
    } 
    ... 
} 
Các vấn đề liên quan