получение атрибута в iframe - PullRequest
       14

получение атрибута в iframe

1 голос
/ 16 августа 2011

У меня проблема с получением атрибутов запроса в IFRAME. ниже приведены фрагменты, в jsp1.jsp у меня есть 2 IFRAMES, src которых являются jsp2.jsp и jsp3.jsp .i хотел бы получить атрибуты запроса на обеих страницах. В основном, атрибут является объектом класса, а некоторые значения были установлены для переменных класса на странице jsp1.jsp. Я хотел бы разделить этот объект между этими 3 страницами. Внутри IFRAME я получаю нулевое значение для атрибута. Я пробовал и session.setAttribute, и request.setAttribute

jsp1.jsp

<td>
<%
Search beans=(Search)request.getAttribute("s");
session.setAttribute("s");
%>
<iframe name="frame1" id="frame1" tabIndex="-1" width="100%" height="100%"   
frameborder="0" src="jsp2.jsp"></iframe>
<iframe name="frame2" id="frame2" tabIndex="-1" width="100%" height="100%" 
frameborder="0" src="jsp3.jsp"></iframe>
</td>

jsp2.jsp

Search beans = (Search)session.getAttribute("s");
if (beans != null) {
//process the bean
}

Может кто-нибудь, пожалуйста, дайте мне знать, как получить установленный атрибут. А также я не могу передать его в качестве параметра в jsp2.jsp, так как это объект

Спасибо Прии

1 Ответ

3 голосов
/ 16 августа 2011

HTML <iframe> в основном инструктирует веб-браузеру отправлять новый HTTP-запрос на указанный src URL-адрес и вставлять его ответ. Он не выполняется по запросу родительской страницы JSP на веб-сервере. Таким образом, передача объектов в качестве атрибута запроса не будет работать. Сеанс будет работать только в том случае, если он уже установлен до , когда вы запрашиваете родительскую страницу JSP.

Я не понимаю, почему вы используете <iframe> таким образом. Это очень плохой подход, когда единственной целью является включение фрагментов страницы, которые находятся на том же сервере, что и родительская страница. <iframe> полезен только тогда, когда вы хотите встроить внешний контент в вашу веб-страницу.

Замените их включениями на стороне сервера, например <jsp:include>, и все будет работать так, как вы изначально хотели.

<jsp:include page="jsp2.jsp" />
<jsp:include page="jsp3.jsp" />

Они будут включены в тот же HTTP-запрос и, следовательно, будут иметь доступ к его атрибутам. Преимущества большие. Ваша проблема будет немедленно решена, SEO будет значительно улучшено (контент <iframe> не индексируется как часть родительской страницы), а также удобен для пользователей (более предсказуемое и надежное поведение веб-сайта, когда есть ссылки и формы внутри <iframe>). * * тысячу двадцать-один

...