2014-09-26 7 views
0

Richfaces 4.2 및 사용자 정의 TinyMCE 서식있는 텍스트 편집기 (버전 3.5.11 기준)를 사용하려고합니다.Richfaces 4.2 및 TinyMCE

편집기는 공식 자습서 (http://www.tinymce.com/wiki.php/Installation)처럼 설치되었습니다. 그것은 작동하고 편집기는 모든 텍스트 영역에 적용됩니다.

내 문제는 양식을 다시 렌더링 할 때 Ajax를 제출 한 후 TinyMCE 인스턴스가 손실되어 더 이상 적용되지 않는 문제입니다.

TinyMCE를 모든 Ajax 제출 또는 다른 접근법에 다시 적용 할 수있는 방법이 있습니까?

답변

0

TinyMCE가 Richfaces ajax 작업 및 렌더링과 상호 작용할 수있는 해결 방법을 만들었으므로 최선의 대답이 아니라고 생각합니다. 내의 WebContent/JS 폴더에

복사 TinyMCE에 폴더하는 init 파일 (선택 외부 파일)입니다 tiny.js 포함 :

여기 내 솔루션입니다.

이 파일에는 tinyMCE init 구성과 tinyMCE를 결합하고 동작을 렌더링하는 JSF2 javascript가 모두 들어 있습니다. 여기

는 tiny.js 코드 :

jsf.ajax.addOnEvent(function(data) { 
switch(data.status) { 
    case "begin": 
     tinyMCE.triggerSave(); 
     break; 

    case "complete": 
     break; 

    case "success": 
     var i, t = tinyMCE.editors; 
     for (i in t){ 
      if (t.hasOwnProperty(i)){ 
       t[i].remove(); 
      } 
     } 

     tinyMCEinit(); 
     break; 
}}); 

function tinyMCEinit(){ 
tinyMCE.init({ 
    language : "pt", 
    mode : "textareas", 
    theme : "advanced", 
    mode : "textareas" 
});} 

이 자바 스크립트가 모든 텍스트 영역을 지우는 tinyMCEinit() 함수를 호출하고 다시 모든 것을 다시 적용하면된다 무엇 JSF. 그것은 처음에는 페이지를 열 때 멋지 네요, 어쩌면 약간의 무거운 DOM 처리지만, 최종 사용자는로드를주의하지 않을 것입니다 ... 페이지에 4 개의 텍사스/에디터가 있고 대안 목록처럼 편집 할 수 있어야합니다. 문제. 같은 페이지의 4 명의 편집자는 로딩 시간이 느리고 이전의 rich는 있습니다 : editor/ckeditor는 성능 손실을 알 수 있습니다. 필요로 자바 스크립트의

음, 하나의 작은 터치는 다음과 같이 당신의 "저장"버튼에 추가 할 :

<a4j:commandButton onclick="tinyMCE.triggerSave();" render="some_panel" value="Any render"></a4j:commandButton> 

triggerSave()는 시간에 에디터에 값 (HTML)를 전송 : inputTextarea을 너무 JSF는 값을 가져 와서 백엔드로 보낼 수 있습니다.