out.print не работает в Java-метод в JSP - PullRequest
0 голосов
/ 08 февраля 2011

У меня довольно странная проблема, вот она:

У меня есть страница jsp, в этом jsp есть iframe, показывающий некоторый контент из другого jsp.Я хочу, чтобы этот iframe обновлялся в <body onload="blabla"..>

Так что я попытался сделать следующее: я преобразовал статический HTML-код iframe в java-код метода.Так было и так:

.,HTML здесь ...

<iframe ... blabla>
</iframe

HTML здесь ....

И я сделал это так:

<body onload="refreshiframe();">

.,HTML здесь ...

<%! void refreshiframe()
{
out.print("<iframe.. blabla> </iframe>");
}
%>

HTML здесь .....

Но проблема в том, что out.print внутри refreshiframe выдает ошибку компиляции.Мой компилятор, jdeveloper 10g, специально говорит, что "переменная 'out' not found".Я могу использовать out.print вне метода, но не внутри метода.Как я могу использовать out.print в методе refreshiframe ()?или есть лучший способ решить эту проблему?Спасибо.

Ответы [ 3 ]

4 голосов
/ 08 февраля 2011

Действительно, вы путаете Java / JSP с JavaScript.

<body onload> должен указывать на функцию JavaScript, а не на метод Java / JSP. Если я вас правильно понял, вы хотите обновить / обновить содержимое iframe? Если это так, добавьте следующее к <head> вашего HTML-документа.

<script>
    function refreshiframe() {
        document.getElementById('frameId').contentWindow.location.reload();
    }
</script>

И присвой свой элемент <iframe> id="frameId".

<iframe id="frameId"></iframe>
4 голосов
/ 08 февраля 2011

Вы пытаетесь выполнить метод Java, объявленный в вашем JSP как метод JavaScript в полученном HTML.

Это не сработает.

Посмотрите, как обрабатывается ваш запрос:

  1. Клиент (браузер) отправляет HTTP-запрос на сервер
  2. Сервер обрабатывает этот запрос, выполняя JSP (т. Е. Ваш код Java)
  3. РезультатJSP (некоторый HTML-код) отправляется клиенту
  4. Клиент отображает полученный HTML-код, потенциально выполняя код JavaScript в нем

Как видите, ваш refreshiframe()метод даже не существует в то время (и место), где интерпретируется атрибут onload (шаг # 4).

Также, что касается ошибки компиляции: вы определяете новыйметод в вашем JSP.Этот метод может получить доступ только к своим параметрам, поэтому, если вы хотите, чтобы он что-то печатал на выходе, вам нужно передать ему out в качестве аргумента.

0 голосов
/ 08 февраля 2011

Просто объявите этот метод для получения параметра и затем вызовите его как refreshiframe(out).

РЕДАКТИРОВАТЬ: Я полностью пропустил, что вы вызвали этот метод в качестве обработчика событий JavaScript. (См. Ответ Иоахима для хорошего объяснения)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...