2010-10-07 15 views

回答

4

JSTL做到了,你也可以。

我碰巧有一個EL函數例子用場了,然後我會貼的C部分:定義的forEach給你一個想法:

你可以把它當作一個分隔的字符串,但如果你想要一個集合或數組,你可以使用這樣的事情:

<function> 
    <name>join</name> 
    <function-class>mypackage.Functions</function-class> 
    <function-signature>String join(java.lang.Object, java.lang.String)</function-signature> 
</function> 

/** 
* jstl's fn:join only works with String[]. This one is more general. 
* 
* usage: ${nc:join(values, ", ")} 
*/ 
public static String join(Object values, String seperator) 
{ 
    if (values == null) 
     return null; 
    if (values instanceof Collection<?>) 
     return StringUtils.join((Collection<?>) values, seperator); 
    else if (values instanceof Object[]) 
     return StringUtils.join((Object[]) values, seperator); 
    else 
     return values.toString(); 
} 

顯然,而非Object輸入,如果你不W¯¯你可以使用數組螞蟻也處理集合。

這裏是C:的forEach定義:

<tag> 
    <description> 
     The basic iteration tag, accepting many different 
     collection types and supporting subsetting and other 
     functionality 
    </description> 
    <name>forEach</name> 
    <tag-class>org.apache.taglibs.standard.tag.rt.core.ForEachTag</tag-class> 
    <tei-class>org.apache.taglibs.standard.tei.ForEachTEI</tei-class> 
    <body-content>JSP</body-content> 
    <attribute> 
     <description> 
      Collection of items to iterate over. 
     </description> 
     <name>items</name> 
     <required>false</required> 
     <rtexprvalue>true</rtexprvalue> 
     <type>java.lang.Object</type> 
    </attribute> 
    ... 
+0

這個解決方案可能會工作,但我已經完成了使用參數,並將這個參數添加到父標籤。 – Victor 2010-10-08 14:17:11

3

如果陣列的數據字符串,你可以通過值作爲一個分隔的列表,也許在一個屬性。

<mytag myattribute="value1,value2,value3"/> 

你就可以用標籤體,或者jsp:param或一些這樣的一樣,但我懷疑是屬性的方法是可能比較容易編寫和理解。

+0

想不出另一種方式把我的頭頂部。標籤應該在JSP頁面中以聲明方式使用,所以你所擁有的只是XML,即字符串,標籤,屬性,除非你打算使用scriptlet,這是不好的做法。你能詳細說明你想要做什麼嗎? – Brabster 2010-10-07 22:17:39