2013-07-23 5 views
1

나는 특별한 문제가있다 : 전체 폼을 제출하지 않고 클라이언트 onchange 이벤트로 서버에 값을 보내야한다. 어떤 기능이 있습니까?f : ajax by onchange 이벤트

<h:inputText onchange= ...js... > 

을 그리고 나는 아약스로 값을 보낼 수 있습니다 :

나는 자바 스크립트에 의해 구성 요소를 처리 할 수 ​​

<f:ajax execute="name"/> 

어떻게 함께 넣어?


그것은 해결,하지만 난 또 다른 질문이있다 :

빨리 처리 무엇

- 이벤트 또는 자바 스크립트 처리의 아약스 처리를?

+1

예, 서버에 특정 데이터를 제출하기 위해 도입 된 이유 인 ajax를 사용할 수 있습니다. 당신은 Jquery의 ajax 호출을 사용할 수 있습니다. 참고 : http : //api.jquery.com/jQuery.ajax/ – dreamweiver

+0

아마도 이것은 해결책입니다 : http://www.jsftoolbox.com/documentation/help/12-TagReference/ core/f_ajax.html (리스너 속성 및 handleEvent (AjaxBehaviorEvent 이벤트) 메소드 구현). –

+0

나는 그것을 서버 측에서 기본으로 풀고 싶다. 이벤트 속성도 사용할 수 있습니다. http://stackoverflow.com/questions/7886453/what-values-can-i-pass-to-the-event-attribute-of-the-fajax-tag –

답변

4

쉬운 AJAX는 페이지에서 발생하는 부분 제출/업데이트 용으로 설계되었습니다. 원하는대로 event 속성을 <f:ajax> 태그로 지정하고 change으로 지정하면됩니다. 부분 양식 제출마다, 태그의 execute 속성에서 서버에 업데이트 할 구성 요소의 ID를 지정하십시오. 그러나 execute이 기본값 인 <f:ajax>은 정확히 @this (이벤트를 발생시키는 구성 요소)이므로 모두 생략 할 수 있습니다. 마찬가지로 :

<h:inputText id="text" value="#{bean.text}"> 
    <f:ajax event="change"/> 
</h:inputText> 

이렇게하면 JavaScript 변경 이벤트가 발생하면 빈 모델이 AJAX를 통해 장면 뒤에서 업데이트됩니다.

가장 먼저 발생하는 질문은 서버에 AJAX 요청을 보내는 것을 트리거하는 JavaScript 이벤트라는 점을 이해해야합니다. 자연스럽게 후자가 먼저 발생합니다. 또한 onevent 특성을 지정하여 AJAX 응답이 성공적으로 커밋 된 경우 클라이언트 측 콜백을 연결하여 JavaScript에 대한 후크를 가져올 수 있습니다.

+0

하지만 h : inputText에 js onchange 이벤트 처리기를 추가하면 먼저 처리되는 것은 무엇입니까? 나는 자바 스크립트를 의미한다. –

+1

물론 핸들러가 먼저 실행됩니다. 또한'onchange' 핸들러에서'false'를 반환하여 AJAX 요청이 전송되는 것을 막을 수 있습니다. – skuntsel

0

내 코드 : 텍스트 상자 손실 foucs (위해 onblur가), xxxAction가 트리거됩니다

<h:inputText id="appleNO" value="#{xxxModel.appleNO}" size="3" maxlength="3"> 
    <f:ajax event="blur" execute="@form" listener="#{xxxController.xxxAction()}" render="appleNO"/> 
</h:inputText> 

.