tyoshikawa1106のブログ

- Force.com Developer Blog -

SFDC:commandButton と onCompleteイベント

commandButtonのaction処理後にjavascript処理の実行はできないと思っていました。
onCompleteイベントで実行できたんですね。サンプルは次のとおり。

Page
<apex:page Controller="CommandButtonOnCompleteController" title="Force.com Sample" showHeader="true" sidebar="false">
	<apex:form id="formId">
		<apex:commandButton value="Button" action="{!doButtonClick}" onComplete="return btnClick();" rerender="formId" />
		<script>
			function btnClick() {
				var message = '{!message}';
				alert(message);
				
				return false;
			}
		</script>
	</apex:form>
</apex:page>
Controller
public with sharing class CommandButtonOnCompleteController {
	
	// メッセージ
	public String message {get; set;}
	
	/*
	 * コンストラクタ
	 * @param	: なし
	 * @return	: なし
	 */
	public CommandButtonOnCompleteController() {
		System.debug('◆◆◆◆CommandButtonOnCompleteController:START');
		
		// メッセージ
		this.message = '';
		
		System.debug('◆◆◆◆CommandButtonOnCompleteController:END');
	}
	
	/*
	 * ボタン押下処理
	 * @param	: なし
	 * @return	: なし
	 */
	public void doButtonClick() {
		System.debug('◆◆◆◆doButtonClick:START');
		
		// メッセージ
		this.message = 'OK';
		
		System.debug('◆◆◆◆doButtonClick:END');
	}
}

GitHub Link

GitHubにもアップロードしてみました。

Apex_CommandButton_OnComplete

https://github.com/tyoshikawa1106/Apex_CommandButton_OnComplete