0
onChange 이벤트가 양식을 다시 채우기 위해 Ajax 호출을 트리거하는 선택 드롭 다운 메뉴가 있습니다. 그 다음에 javascript 함수 init()이 호출되어 정렬 할 수있는 div가 양식을 새 데이터를 기반으로합니다. 내가 초기화()를 수행 한 후 예상대로 div의이 주문 될 수 있다는 것을 발견 디버거를 사용하지만, 그것은 실행됩니다Scriptaculous Sortable이 Ajax 및 JSF에서 올바르게 작동하지 않습니다.
기능 기능 _createResponder (요소, EVENTNAME, 핸들러) prototype.js에에에responder = function(event) {
Event.extend(event, element);
handler.call(element, event);
};
함수에서 히치
return !scope ? method : function() {
return method.apply(scope, arguments || []);
}; // Function
을 수행 하였다 : 함수 (/범위/기능/개체 | 문자열/방법/을 ... /)을 jsf.js에 저장하면 div가 원래 순서대로 다시 설정됩니다. 여기
는 내 facelet에서 코드의 조각을 제거한다 :이function init() {
changeOrder("sortable", "dataGroup", document.getElementById("MaintainPreferencesBean:selectLayout").selectedIndex);
Sortable.create("sortable", {
tag : 'div'
});
}
function changeOrder(container, className, layoutIndex) {
var divs = document.getElementById(container).getElementsByClassName(
className);
for (var i = 0; i < groupNamesArray.length; i++) {
var div = document
.getElementById(groupNamesArray[desiredOrder[layoutIndex][i]]);
var insPt = divs[i];
if (insPt != null && insPt != div)
insPt.parentNode.insertBefore(div, insPt);
}
}
참고 된 div가 비 아약스 페이지 새로 고침에 제대로 정렬합니까 것을 : 여기
<body onload="init()">
<form id="MaintainPreferencesBean">
<t:selectOneMenu id="selectLayout" value="#{maintainPreferencesBean.layoutIndex}">
<f:selectItems value="#{maintainPreferencesBean.layoutNames}" />
<f:ajax listener="#{maintainPreferencesBean.setLayout}" render="@form" onevent="init()" />
</t:selectOneMenu>
<div id="sortable">
<div id="demoGroup" class="dataGroup"></div>
<div id="offenseGroup" class="dataGroup"></div>
</div>
</form>
</body>
는 자바 스크립트입니다 . 또한 Ajax 대신 valueChangeListener (일반적인 단계 해결 방법 사용)를 사용하면 순서가 작동합니다.