function my function(){
Это синтаксически неверно двумя способами: 1) my
здесь не так. 2) function
является зарезервированным ключевым словом.
Что касается динамического генерирования кода Javascript, я настоятельно рекомендую вам не использовать для этого scriptlets , а просто taglibs / EL. Ваша первая строка может быть полностью заменена с помощью JSTL (просто бросьте jstl-1.2.jar in /WEB-INF/lib
) c:forEach
:
<head>
<script type="text/javascript">
function myFunction() {
// <c:forEach begin="0" end="10" var="i">
alert(message${i});
// </c:forEach>
}
</script>
</head>
Намного лучше, не так ли?
Обновление в соответствии с комментариями, вы также можете перебрать Collection
с c:forEach
. Заменить конкретный кусок на:
<c:forEach items="${bean.vector}" var="item">
alert('${item}');
</c:forEach>
.. где ${bean}
- ваш компонент, помещенный в любой из page
, request
, session
или application
и ${bean.vector}
требует наличия геттера с этим именем в Bean
класс как
public class Bean {
public Vector<String> getVector() {
return this.vector;
}
}
Чтобы узнать больше о JSTL, обратитесь к Sun Учебное пособие по Java EE, часть II, глава 7 . Чтобы узнать больше об EL, обратитесь к учебному пособию по Java EE, часть II, глава 5 .
Тем не менее, Vector
считается устаревшим , и вы должны использовать вместо него улучшенный ArrayList
, который уже заменил его более десяти лет назад (подробнее о платформе Collections в этом уроке Sun ). В этой строке я бы также порекомендовал выбросить все эти 10-летние учебники и книги и прочитать последние.