내 모든 링크는 매개 변수 menuId (물론 표시된 메뉴의 ID)를 찾는 하나의 동작을 거칩니다. 이 작업에서
는 응답을 반환하기 전에 하나 개의 자바 스크립트 함수가 호출되도록 설정 :
setBackMenuId(menuId,sometext)
menuId와는 sometext 브라우저 로그 이력 더 나은 해당 메뉴의 이름이기 때문에, ID입니다.
function setBackMenuId(id,subtekst) {
window.location.hash = "menuId="+id;
document.title = subtekst;
selectedHash = document.location.hash;
if(intervalHashSearch == '') {
initializeHashSearch();
}
}
그런 다음, 다른 필요한 JS 기능 : 당신이 그것을 보면 당신이 볼
function publishLinkTarget() {
var param = window.location.hash;
if(param) {
if(param.indexOf("menuId") > 0) {
var id = param.split("=", 2);
if(id[1]) {
setCookie('backMenuId',id[1],1,false);
setTimeout('publishLayoutContent()', 100);
}
}
}
}
var selectedHash = '';
var intervalHashSearch = '';
function initializeHashSearch() {
intervalHashSearch = window.setInterval('checkHash()', 500);
}
function stopHashSearch() {
window.clearInterval(intervalHashSearch);
intervalHashSearch = '';
}
function checkHash() {
var currentHash = document.location.hash;
if(selectedHash != currentHash) {
selectedHash = currentHash;
publishLinkTarget();
}
}
function publishLayoutContent() {
dojo.event.topic.publish("layoutContentTarget");
}
이 먼저라는 것을, 해시 및 매개 변수 바, 변경 제목을 해결하기 위해 추가되는 'setBackMenuId' 그런 다음이 해시를 기억하므로 간격 해시 검색을 통해 차이점을 찾을 수 있습니다. 그런 다음이 해시 검색을 초기화합니다.
'checkHash'는 500 밀리 초 동안 실행되며 해시가 변경되었는지 (즉, 뒤로 버튼이 눌려 졌는지, 새 링크가 클릭되지 않았는지 확인하는 중입니다 (setBackMenuId가 selectedHash를 설정 함) true 인 경우 누름) 함수 'publishLinkTarget'이 호출되어 해시에서 매개 변수를 읽습니다. 쿠키가 정상이면 쿠키를 설정하므로 HttpServletRequest에서 해당 매개 변수를 읽고 어떤 메뉴 ID 링크인지 확인할 수 있습니다. 내가 또한 'publishLayoutContent'로 만들어지는 콘텐츠를 게시해야 함을 의미 액션 클래스에서
(이의 MenuAction, 방법보기에 발표 한 동일) 만이 중요하다.
Integer menuId = null;
if(request.getParameter("menuId") != null) {
menuId = Integer.valueOf(request.getParameter("menuId"));
} else {
menuId = getIntCookie("hiddenMenuId");
}
매개 변수 (링크 클릭)에서 메뉴 ID를 얻지 못하면 쿠키 (뒤로/앞으로 버튼)에서 가져옵니다. 이 목표와
그리고 JSP :
<s:url var="layoutContentUrl" action="Menu-view" namespace="/public" />
<sx:div showLoadingText="false" indicator="ajaxIndicator"
id="layout-content" href="%{layoutContentUrl}" theme="ajax"
listenTopics="layoutContentTarget" preload="false"
afterNotifyTopics="/ajaxAfter">
</sx:div>
참고 : 모든 것이 하나 개의 매개 변수를 통해 연결되어있는 경우는 특별한 경우이지만, 쉽게 다른 목표를 게시 다른 매개 변수를 확장 할 수 있습니다. 나는 그것을 어딘가에 출판하기에 충분히 일반화하려고 노력할 것이다. 그러나 이것이 먼 길을 간다. (내 생각 엔) 먼 길을 간다.
어떤 질문이 있으면 게시 해주십시오.
어떤 Dojo 버전을 사용하고 있습니까? 마지막으로, Struts가 Dojo 플러그인을 0.4부터 업데이트하지 않았다고 들었습니다. (지금은 몇 살입니다.) – peller
예, dojo-plugin은 버전 2.0.6부터 사용되지 않습니다. – Trick
Dojo의 최신 버전이 있습니다. 불행하게도 당신이보고있는 것은 그 당시 꽤 오래되었습니다. – peller