Передача переменной из Scriptlets в Javascript. - PullRequest
1 голос
/ 14 марта 2012

У меня есть этот фрагмент кода ::

<script type="text/javascript">
function gotoa(){
    <%!
    public void a(){
     String temp1;
    PopulateTextbox obj = new PopulateTextbox();
    temp1 = obj.method();
    request.setAttribute("variable", temp1);
    }
    %>


var myVar = <%=request.getAttribute("variable")%>
}
</script>

То, что я хочу сделать, это получить значение переменной temp1 в моей функции JavaScript gotoa (). В этом конкретном коде я получаю сообщение об ошибке с ошибкой

request.setAttribute("variable", temp1);

Моя главная цель - вызвать функцию a () для какого-либо события нажатия кнопки, чтобы мой скрипт позволил коду повториться, и свежие значения были переданы в переменную temp1. который затем будет передан gotoa () в качестве источника для моей сетки данных (не в этом коде). в основном я хочу обновить сетку по нажатию кнопки. Я делаю правильный путь. Пожалуйста помоги. Благодарю.

Ответы [ 2 ]

5 голосов
/ 14 марта 2012

Когда вам нужно значение переменной temp1 внутри gotoa(), сделайте следующее:

<%  String temp1; // Store value in temp1 variable for later use
    PopulateTextbox obj = new PopulateTextbox(); 
    temp1 = obj.method();
%>
<script>
function gotoa(){ 

    var temp1Val = document.getElementById("hiddenTemp1").value;
    // put your logic here
    document.getElementById("hiddenTemp1").value = tempVal1;
}
</script>
<body>
<form action="otherPage.jsp">
    <!-- use the value of temp1 variable -->
    <input type="hidden" name="hiddenTemp1" id="hiddenTemp1" value="<%=temp1%>">
    <input type="button" onclick="gotoa()" value="GotoA">
    <input type="submit" value="Submit New Value">
</form>
</body>

Сначала вы присваиваете значение переменной temp1. А затем вы визуализируете свой JSP с помощью компонента скрытого ввода со значением = temp1, используя скриптлет. Если вы хотите проверить, просто просмотрите Источник сгенерированного HTML, и вы должны увидеть значение скрытого ввода равным переменной.

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

0 голосов
/ 27 августа 2013

Сначала позвольте мне рассказать вам пару вещей, которые я наблюдал в этом

1) Для настройки и получения запроса требуется отправка страницы, в противном случае он не будет доступен в параметре

2)Scriplet и jsp компилируются по-разному, так как ваша компиляция scriplet всегда происходит (независимо от того, где находится тело заголовка или нижний колонтитул) сначала

Теперь предложения о том, как мы можем это сделать

1) ИспользованиеEJB-объект вместо объекта запроса

2) Используйте скрытый тег ввода, чтобы установить и получить необходимое значение, назначьте метод get для значения тега ввода, например, ', и когда вам нужно, чтобыизменилось, вам нужно отправить форму, если вам не нужно перезагружать всю страницу, обратитесь к ajax-методам, чтобы изменить только значение без перезагрузки страницы

...