2014-07-12 5 views
0

JSF에서 여러 번 클릭하는 것을 방지하고 싶지만 모든 시도가 작동하지 않습니다. 해당 버튼의 작업은 테이블에 데이터를로드하는 역할을합니다. 나는 그런 일이 :JSF의 여러 번 클릭 버튼 방지

<h:commandButton class="inputButton bFind" action="#{backingBean.load}" value="#{msgc.find}" /> 

을하지만 라인은 사용자가 작업을 종료하기 전에도 그 버튼을 클릭 할 수 있습니다.

<a4j:commandButton class="inputButton bFind" onclick="this.disabled=true" oncomplete="this.disabled=false" action="#{backingBean.load}" value="#{msgc.find}" /> 

또는

<a4j:commandButton class="inputButton bFind" onclick="this.disabled=true" oncomplete="this.disabled=false" action="#{backingBean.load}" value="#{msgc.find}" /> 

다음 버튼을 차단하고 다수의 클릭을 방지한다하지만 나는 테이블에 데이터를 볼 사이트를 새로 고쳐야합니다 :

나는 그런 식으로 뭔가를하려고하면. :/ 나는이 일을 어떻게해야할지 모른다.

+0

체크 아웃 [이] (http://stackoverflow.com/q/6482443/에 다시 렌더링해야 내용을 넣어 : 내가해야 할 일을 모두 다시 쓰게 속성을 추가입니다 1391249) (PrimeFaces를위한 것입니다). – Tiny

+1

첫 번째 방법 ('h : commandButton'을 사용)은 서버에 표준 제출을 수행합니다. 다른 하나는 ('a4j : commandButton'과 함께) 당신이'reRender' 속성에서 지정하지 않는 한, 디폴트로 테이블을 렌더링하지 않는 ajax 요청을 수행합니다. –

답변

0

알았어요. Thx "@Xtreme Biker"에 도움을 요청합니다.

<a4j:commandButton class="inputButton bFind" onclick="this.disabled=true" oncomplete="this.disabled=false" action="#{backingBean.load}" reRender="dataTable_#{backingBean.id}" value="#{msgc.find}" /> 

<a4j:outputPanel id="dataTable_#{backingBean.id}" ajaxRendered="true"> 
</a4j:outputPanel> 
관련 문제