2010-10-07 2 views

ответ

4

JSTL делает это, и вы можете тоже.

я, случается, есть пример функции эш под рукой, а затем я буду вставлять часть с: определение 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 входа вы можете использовать массив, если вы не ж ant для обработки коллекций.

Вот с: 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

Это решение может работать, но я уже сделал с помощью params и добавил эти параметры в родительский тег. – Victor

3

Если данные массива строк, вы можете передавать данные в виде ограниченного списка, возможно, в качестве атрибута.

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

Вы могли бы сделать то же самое с телом тега, или jsp:param или некоторые такие, но я подозреваю, что этот подход атрибут, вероятно, проще код и понять.

+0

не может придумать другой способ с верхней частью моей головы. Теги должны использоваться декларативно, на страницах JSP, поэтому все, что у вас есть, - это действительно XML, т. Е. Строки, теги, атрибуты, если вы не собираетесь использовать скрипты, что не является хорошей практикой. Можете ли вы подробно рассказать о том, что вы пытаетесь сделать? – Brabster

Смежные вопросы