🐴
Apex,Visualforce:キャンセルボタン,保存ボタン,適用ボタンを作る
はじめに
「スタンダードコントローラを使わずカスタムコントローラを使ってVisualforceページを作成したい。だが、Save/Cancelの挙動がわからない。何をどうすればいいの?」
そんな人向けの記事です。
つまりは過去の自分向け。
サンプル用Visualforce
<apex:page controller="CustomControllerTest">
<apex:form >
<apex:pageBlock title="取引先編集画面">
<apex:pageBlockTable title="acc" value="{!acc}" var="acc">
<apex:column headerValue="Id" >
<apex:inputField value="{!acc.Id}"/>
</apex:column>
<apex:column headerValue="Name" >
<apex:inputField value="{!acc.Name}"/>
</apex:column>
</apex:pageBlockTable>
</apex:pageBlock>
<apex:commandButton action="{!save}" Value="保存"/>
<apex:commandButton action="{!quicsave}" Value="適用"/>
<apex:commandButton action="{!cancel}" Value="キャンセル"/>
</apex:form>
</apex:page>
画面イメージ
サンプル用カスタムコントローラ(全体)
public class CustomControllerTest {
public Id accountId; //取引先のID
public Account acc {get;set;}
//コンストラクタ
public CustomControllerTest() {
accountId = ApexPages.currentPage().getParameters().get('id');
acc = [Select id, Name from Account where Id = :accountId];
}
//キャンセル処理
public PageReference cancel() {
String prevURL = '/' + accountId;
PageReference pageRef = new PageReference(prevURL);
return pageRef;
}
//保存処理
public PageReference save() {
upsert acc;
String prevURL = '/' + accountId;
PageReference pageRef = new PageReference(prevURL);
return pageRef;
}
//適用処理
public PageReference quicsave() {
upsert acc;
return null;
}
}
解説
キャンセルボタン
//キャンセル処理
public PageReference cancel() {
String prevURL = '/' + accountId;
PageReference pageRef = new PageReference(prevURL);
return pageRef;
}
動作イメージ
保存ボタン
//保存処理
public PageReference save() {
upsert acc;
String prevURL = '/' + accountId;
PageReference pageRef = new PageReference(prevURL);
return pageRef;
}
動作イメージ
適用ボタン
//適用処理
public PageReference quicsave() {
upsert acc;
return null;
}
Discussion