AJAX способ добиться этого заключается в следующем:
- у вас есть DIV на исходной странице, которая будет заменена (т. Е. Либо имеет контент, который имеет смысл только в исходном контексте, либо полностьюпусто)
- ваш сервлет Link2 создает только содержимое указанного выше DIV (а не содержимое этой страницы)
- вы используете крошечный кусочек Javascript для выполнения вызова AJAX и заполнения DIVс ответом.
Если вы хотите использовать Dojo, HTML-страница будет выглядеть следующим образом:
<!-- main content -->
<div id="leftpanel">
<h3>This content will be replaced</h3>
You can <a href="#" onClick="updateFromURL('/MyStrutsApp/AddBook.jsp)">add a book</a>
</div>
Код Javascript будет выглядеть следующим образом:
<script src="http://ajax.googleapis.com/ajax/libs/dojo/1.6/dojo/dojo.xd.js" type="text/javascript"></script>
<script type="text/javascript">
function display_wait(s) {
var mainPanel=dojo.byId("leftpanel");
mainPanel.innerHTML='<div class="waitingmsg">'+s+'</div>';
}
function updateFromURL(url) {
display_wait("loading content");
dojo.xhrGet({url:url,
load:function(result) {
dojo.byId('leftpanel').innerHTML=result;
}});
}
</script>
(Как упоминал Рафа, вы можете использовать ту же технику для отображения новой детали в диалоговом окне)