2010-03-01 2 views
2

나는이 응용 프로그램이 배포 된이RichFaces의 A4J를 사용하는 방법 :있는 명령 제출 사용하지

<a4j:commandButton id="stopBtn" type="button" reRender="lastOp" 
    action="#{MyBacking.stop}" value="Stop" /> 
</a4j:commandButton> 

처럼 보이는, 그리고 버튼은 정지() 메서드가 호출되지 않고, 클릭하신 a4j:commandButton. 모든 a4j:commandButton 예제는 양식을 참조하지만이 버튼은 양식이 아닙니다. 사용자가 서버에서 일부 백엔드 로직을 실행하게하는 버튼입니다. 지금이 순간, 방법은 버튼의이 유형은 lastOp 필드를 업데이트하는,하지만이 하나 콘솔에 아무것도 보이지 않아요 사용하지 않는

public void stopNode() { 
logger.info("STOPPING"); 
setLastOp("Stopped."); 
} 

다른 방법이다. 이걸 단추로 던지는 게 옳은가요? 이 태그를 h:form 태그에 넣어야합니까?

파이어 버그 콘솔은 말한다 :

this._form is null 

이해가 안되는.

아무 도움도 좋습니다.

답변

7

UICommand 구성 요소는 UIForm 구성 요소 안에 있어야합니다. 그래서, 당신의 추측

나는 이것을 h:form 태그에 넣어야합니까?

완전히 올바른 : 그들이 POST 요청하고 유일한 (일반) 방법은 method 속성 "post"로 설정되어 HTML <form> 요소를 사용하고 불이 때문이다. Firebug는 또한 상위 폼 요소가 예상되었지만 null으로 확인되었으므로 아무런 작업도 수행 할 수 없습니다.

h:outputLink과 같은 "일반 바닐라"링크 만 있고 GET 요청을 발생시키기 때문에 consorts에는 양식이 필요하지 않습니다.

2

예, 양식으로 포장하십시오. BalusC가 내 대답을 입력하는 동안 자세한 설명을 게시 할 것입니다. (예, 저기 있습니다)

여기에 게시하기 전에 먼저 양식을 시도하지 않은 이유를 묻습니다. 코드에서

+0

내가 한 번에 두 가지를 생각하고 있었는데, 정직하게, 그리고 것을 내 일의 끝이 왔을 때를 제외하고 그것을 시도한 질문을 편집하고 나는 문 밖으로 나왔다. 너의 관찰을 위해 +1 .. – volvox

1

봐 :

당신은 /><a4j:commandButton을 완료
<a4j:commandButton id="stopBtn" type="button" reRender="lastOp" action="#{MyBacking.stop}" value="Stop" /> 

, 왜 고아 </a4j:commandButton>이 필요하십니까?

1

어떤 이유로 폼 내부에 버튼을 배치하지 않으려면, 당신은 다음과 같이 수행 할 수 있습니다

<a4j:commandButton onclick="fireAjax()"/> 

<h:form> 
    <a4j:jsFunction name="fireAjax" action=".."/> 
</h:form> 
관련 문제