Я переписываю свой. jsp из скриптов в JSTL / EL, и я столкнулся с проблемой.Это, наверное, очень просто, но я новичок в EL и немного потерян.
Вот что я делаю ...
В сервлете / контроллере:
final List<Person> l = new ArrayList<Person>();
personList.add(...);
.
.
request.setAttribute( "personList", l );
И в моем. jsp :
<c:forEach var="person" items="${personList}">
${person.name}
</c:forEach>
Но я дублирую "personList", потому что я использую его как в setAttribute , так и в Foreach .Как я могу избавиться от этого дублирования?
В идеале я хотел бы иметь константу, такую как public static final final String , на которую я мог бы ссылаться как из сервлета, так и из .jsp (используя EL, а не скриптлеты).
Очевидно, что причина, по которой я хочу устранить это дублирование, заключается в том, что если я решу переименовать personList , скажем, people (с 's'), мне нужно изменить две вещи, и это подвержено ошибкам.Если бы у меня была константа, было бы только одно место, где мне нужно было бы внести это изменение.
РЕДАКТИРОВАТЬ кто-то сказал, что при использовании константы все равно должно быть два местаизменить, если я изменил имя константы.Однако есть большая разница, если бы я мог сделать это:
request.setAttribute (Constants.PERSON_LIST, l);
затем решите переименовать * PERSON_LIST * и сделаете опечатку, которая сломаетсяво время компиляции.
В то время как если я наберу неправильный тип:
request.setAttribute( "persnList", l ); // forgetting an 'o' here
Это будет неуклюже скомпилироваться и завершится с ошибкой, если .jsp использует "personList", а неопечатка "persnList".