2012-01-12 2 views
2

드롭 다운 목록에서 값을 선택하고를 눌러 편집기에 텍스트를 추가 할 수있는 페이지에 PrimeFaces (2.2.1) 편집기가 있습니다. 버튼이 텍스트에 추가되도록 지정합니다. 나는 다음과 같은 자바 스크립트를 사용하여 편집기에 텍스트를 추가 할 수 있습니다 값이 변경 될 때JavaScript에서 PrimeFaces 편집기 구성 요소를 새로 고치는 방법

document.getElementById('form:editor').value = document.getElementById('form:editor').value + 'NEW TEXT!'; 

그러나, inputTextarea 달리 PrimeFaces 편집기 구성 요소는 자동으로 새로 고쳐지지 않습니다. 브라우저의 새로 고침 버튼을 누르거나 편집기의 소스보기 버튼을 눌러 추가 된 텍스트를 표시해야합니다. 편집기에서 값을 변경 한 후 새로 고치려면 자바 스크립트에서 할 수있는 것이 있습니까?

+1

'actionListener'를 사용하여 서버 쪽의 텍스트를 업데이트하지 않는 이유는 무엇입니까? –

+0

사실, commandButton을 누르기 만하면 Backing 빈의 값이 Editor의 현재 값으로 업데이트되고 버튼의 동작으로 텍스트를 추가 할 수 있습니다. 이 기술의 문제점은 PrimeFaces Editor가 자체적으로 새로 고치는 데 사용하는 코드가 결함이 있다는 것입니다. 원래 구성 요소의 텍스트 영역에 자체의 새로운 복사본이 렌더링되어 Ajax를 사용하지 못하게됩니다. 해결책은 Ajax를 피하고 단순히 서버쪽에 텍스트를 추가 한 후 전체 페이지를 새로 고치는 것이 었습니다. –

답변

1

좋은 해결책은 아니지만 작동해야합니다.

editorWidgetVar.jqInput.var() 

은 양식 제출시 제출 될 값을 저장합니다.

$(editorWidgetVar.jq.find('iframe')[0].contentDocument).find('body').html() 

그러나 이것은 실제로 사용자 요소에 표시됩니다. 따라서 편집기의 내용을 변경하려면 두 필드를 모두 변경해야합니다 (적절한 제출을 위해 숨겨져 있고 적절한 표시가 표시되어 있음). 나는 거기에 대한 일반적인 API가 거의 확실하다. 이 방법은 임시 해결책으로 유용 할 것입니다.

관련 문제