CommandButtonは、サーバー上でコードを実行するために使用され、string/json値ではなくPageReferenceを返します。
<apex:commandButton action="{!whatever}" value="myButton" reRender="sectionX" />
したがって、メソッドwhatever
は作業を実行してから、結果をコントローラーのパブリックプロパティに割り当てて、ページに結果を表示できるようにする必要があります。rerender属性は、出力パネルのデータをリロードすることを示していますsectionX
。SectionXは、コマンドボタンアクションから表示する結果を囲む必要があります。
public class myController {
public string Result {get;set;}
public PageReference whatever() {
// do your work here
Result = DateTime.Now();
return null;
}
}
Visualforce
<apex:outputpanel id="sectionX">{!Result}</apex:outputpanel>
コマンドボタンをクリックするたびmyButton
に、出力パネルに新しい日時文字列が表示されます。
後付け:文字列のresult / JSONをjavascriptメソッドに入れたい場合は、次のようにすることができます。
<script>
function processJSON(val) {
var res = JSON.parse(val);
// do your work here
}
</script>
<apex:outputpanel id="sectionX">
<script>
processJSON("{!Result}");
</script>
</apex:outputpanel>
サンプルのコマンドボタンコードでは、再レンダリングを使用したため、null以外のPageReferenceを返す必要はありません。一方、コマンドボタンをクリックしたときに別のページに移動する場合は、再レンダリング属性を設定せず、null以外のPageReferenceを返す必要があります。
public PageReference whatever() {
return Page.MyVisualforcePage;
}