2012-04-20 5 views
0

У меня есть сервлет Java, который успешно устанавливает кучу переменных сессии, Say:Javascript - передавая переменную session.getAttribute

SessionVar1 SessionVar2 SessionVar3

Теперь в Java Script, я могу читать и печати переменных сеанса, используя код, подобный следующему:

var name = '<%= session.getAttribute("SessionVar1") %>';  
var name = '<%= session.getAttribute("SessionVar2") %>';  
var name = '<%= session.getAttribute("SessionVar3") %>';  

Тогда я называю document.write печать name1, name2 и name3.

Снова это работает без проблем. Тем не менее, у меня нет 3 переменных сеанса, но 100. Я не хочу писать 100 вызовов session.getAttribute, поэтому я хотел использовать цикл «FOR» и добавить счетчик циклов к имени переменной сеанса извлечения. Что-то вдоль линий:

int i=100; 
for (i=1; i<=100; i++) 
{ 
    var VariableName = "SessionVar" + i; 
    var name = '<%= session.getAttribute(VariableName) %>';  
    document.write(name); 
} 

Я попробовал много комбинации, и я не в состоянии передать параметр в session.getAttribute. Я понимаю, что параметры Javascript не существуют в контексте сервера, но Мне было интересно, есть ли способ избежать вызова session.getAttribute 100 раз.

Заранее спасибо.

С уважением,

Guy

ответ

1

Конечно нет - скриптлет (Boooo) выполняется до того, как клиент имеет возможность запускать любые JavaScript.

каноническое решение для генерации JS в Java (желательно с помощью тегов), очень примерно:

<% for (int i = 0; i < 100; i++) { %> 
    var name<%= i %> = '<%= session.getAttribute("SessionVar" + i) %>'; 
<% } %> 

С оговоркой, что (а) РЭБ, и (б) вы должны JavaScript-бежать атрибут должен быть безопасным.

Это по-прежнему вызывает getAttribute 100 раз - вам нужно 100 переменных сеанса (уже начинающихся с запаха кода), вы называете это 100 раз. Другой вариант - поместить все это в массив, потому что nameNNN тоже немного странно - коллекции существуют по какой-то причине.

+0

+1: Я видел производственный код, подобный этому в 2001 году ... не знал, что люди все еще так думают –

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