2015-02-14 3 views
1

Мне, должно быть, недостает чего-то, что я надеюсь, что кто-то может установить меня прямо. Унаследованный Webapp использует struts2 и JSP-страницы, и я хочу организовать его с помощью этого менеджера макетов (http://igniteui.com/layout-manager/border-layout-markup). Будет левое меню, в котором есть ссылки, которые будут загружать контент в центр, тогда как главная страница (верхний колонтитул, нижний колонтитул, левое меню) остается помещенной, что, я считаю, соответствует принципам SPA. «Контент» в середине будет страницами JSP, которые имеют формы с полями ввода, которые отправляются после действий пользователя.Struts2 класс действия при загрузке страницы

То, что я не понимаю, - это то, как действия распорок вписываются в это. Приложение имеет действия, которые определены в struts.xml, и это отлично работает при отправке этой страницы/формы. Но как насчет того, когда новый JSP загружается в раздел содержимого главной страницы? Как или какое действие связано с этой загрузкой?

В настоящее время главная страница использует IFRAME для содержания:

<div class="center"> 
    <iframe id="ifrmContent" name="iframe" src="jspDefaultContent.jsp" </iframe> 
</div> 

и при нажатии на ссылку в левом меню это как я включаю содержание:

$("#ifrmContent").attr('src','jspNewContent.jsp'); 

Сначала я должен спросить если это правильный/лучший способ сделать это, поскольку я видел/слышал, что использование iframes не является идеальным.

Во-вторых, особая проблема заключается в том, что нет никакого «действия», связанного с этой новой загрузкой страницы контента JSP. Таким образом, OGNL, который использовался для заполнения некоторых списков элементов s: select с данными из базы данных, не работает. В частности, этот WILL работает: «% {@ [email protected]}», потому что он вызывает статическую переменную в этом классе Java-сервера, но это НЕ: «% {getCities()}», поскольку он пытается вызвать метод класса действия .. и его нет. Он не вызывает действие главной страницы и не вызывает класс действия страницы содержимого.

Как я могу получить класс действия, связанный с страницей контента, которую я загружаю из ссылки меню? Или, как это сделать/должно быть организовано, чтобы у меня не было этих проблем, учитывая, что я хочу только обновить/отправить контент, а не всю главную страницу?

Спасибо за любой совет.

ответ

1
  1. Там нет ничего плохого с использованием с (для правильных целей), они лучший вариант для их usecases (например, вставлять документ в страницу). Идите дальше и проверьте, не злоупотребляют ли они здесь, если вам все равно.

  2. Инфракрасные объекты IgniteUI, похоже, не всегда подходят Struts2 (или Java вообще), они, похоже, созданы с учетом экосистемы .NET. Другой пользователь спросил около working with their File Uploader widget ... будьте осторожны.

  3. Когда вы устанавливаете атрибут src , этот URL-адрес вызывается. Поскольку вы используете Struts2, JSP не следует вызывать напрямую, вместо этого они должны быть результатом выполнения действий.

    Итак ...просто назвать действия, вместо JSPs:

    <div class="center"> 
        <iframe id="ifrmContent" src="defaultContet.action" /> 
    </div> 
    
    $("#ifrmContent").attr('src','newContent.action'); 
    
1

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

  • iFrame загрузит рамку в виде отдельной страницы. Если вы пишете страницу с 1 iframe в области тела, то она загружает 2 страницы, что сделает загрузку страницы немного медленнее.
  • Содержимое iframe будет загружено первым, после чего содержимое веб-страницы будет отображено, поэтому вы обнаружите, что часть содержимого на некоторых веб-страницах заполняется быстро, в то время как другое содержимое загружается с задержкой.
  • Вы можете использовать iFrame для загрузки AD, но постарайтесь избежать его.

Второй
Как я могу получить класс действия, связанные с содержанием страницы я загружаю по ссылке меню?

Вы можете указать элементы действия любой из ваших страниц JSP на сервлет действия (struts.xml). Вы должны указать действие с этой страницы JSP на действие, которое вы хотели отобразить в Struts.xml.

Это та же модель, что и базовая программа struts2. Если у вас есть общее представление о потоке стоек, вы можете это сделать.

Как это сделать/должно быть организовано, чтобы у меня не было этих проблем, учитывая, что я хочу обновить/отправить контент, а не всю главную страницу?

Если это так, вы не должны использовать iframes для загрузки контента в разделе тела. Iframe будет загружать всю веб-страницу для каждого HTTP-запроса.
Ответ для этого заключается в использовании AJAX с jQuery

+0

дайте мне знать, если у вас есть какие-либо запросы программно. btw u может принять мой ответ, если его помощь – divine