2009-05-12 6 views
0

매개 변수를 사용하지 않고 JSF에서 문자열을 리턴하는 bean 메소드를 호출하는 쉬운 방법을 찾고있다. 필자가 필요로하지 않는 것은 메소드가 액션 결과를 리턴 한 다음 전체 JSF 라이프 사이클을 사용하여 다른 뷰로 이동한다는 것이다. JavaScript에서 그렇게해야만 응용 프로그램의 일부 클라이언트 측 부분을 함께 배치 할 수 있고 RichFaces의 A4J 부분을 통해 나는 지금까지 아무 것도 가져 오지 못했습니다.JavaScript에서 JSF의 서버 측 코드 호출

그래서 여기에 시나리오는 단계별 형태로 다시의 : JS 문제에서

  1. GET과 문자열 기본적으로 JSON 또는 HTML을 (반환 서버 프로세스에 대한 몇 가지 주소
  2. 에 GET)
  3. 일단 요청이 클라이언트로 보내지면 JS로 더 처리 할 수 ​​있기를 원합니다.

고마워요!

답변

2

a4j : jsFunction 및 데이터 속성을 사용하십시오.

<button onclick="callBackend();">Go</button> 

<a4j:jsFunction name="callBackend" action="#{myBean.someMethod}" data="#{myBean.someString}" oncomplete="handleResponse(data);"/> 

<script> 
function handleResponse(response) { 
    alert(response); 
} 
</script> 
+0

예, 그렇지만 myBean.getSomeString()이 아니라 someMethod에서 결과를 반환하는 것이 좋습니다. –

+0

나는 그것을 시도하지는 않았지만 당신은 그 행동을 버리고 someMethod()를 데이터에 넣을 수 있었습니까? – Damo

+0

나는 그것을했다. 데이터 메소드가 getter (String getSomeMethod())와 같이 정의되어야한다는 것입니다. 그것 이외에 그것은 작동합니다. 감사! –

0

다모 :

그래서 대략 당신이 뭔가를 원하는 그것은 단지 방법 callBackend 실행 처음 작동 할 수 있습니다 이유를 설명 할 수 있습니까? 첫 번째 호출이 성공하고 다음 호출이 방금 차단 된 이상한 동작이 발생합니다. 서버 측 코드가 실행되고 있지만 이상한 결과가 브라우저로 전송됩니다 (_viewstate와 같은 종류의 것들).

+0

확실하지 않습니다. 스크립트가있는 지역을 다시 렌더링하기 전에 이런 종류의 동작을 경험했습니다. 따라서 단추 또는 jsFunction을 다시 렌더링하지 않도록하십시오. – Damo

관련 문제