こちらでの質問は初めてになります。
納期の関係で少々急ぎのため、マルチポストになることをお許しください。
少々特殊な環境下で動作するVFページを実装しています。
動作環境の都合でJavascriptから値を取得する必要があり、Remote Actionを使用しました。
Apexでひとしきり処理を実行し、実行結果を文字列で返してalert()で出力したいと思っています。
検索やCopilotなどの助けを借りて下記JavascriptコードをVFに埋め込みました。
Javascript
1function method1(method){ 2 // 環境特有の処理 3 method002(param1, param2).then(function(result){ 4 alert(result); 5 }).catch(function(event){ 6 alert(event.message); 7 }); 8} 9function method2(param1, param2){ 10 alert('No.1'); 11 return new Promise(function(resolve, reject){ 12 Visualforce.remoting.Manager.invokeAction( 13 '{!$RemoteAction.VisualforcePageController.apexRemoteActionethod}', 14 param1, 15 param2, 16 function(result, event){ 17 alert('No.2'); 18 if (event.status) { 19 alert('No.3-1'); 20 resolve(result); 21 } else { 22 alert('No.3-2'); 23 reject(event); 24 } 25 }, 26 { buffer: true, escape: true, timeout: 30000 } 27 ); 28 }); 29}
この状態でmethod1を実行したところalertが出力されるのですが、No.1のみ出力される場合とNo.3-1まで出力される場合が感覚ランダムで発生します。
Apex側に問題はなく、No.1のみの場合もNo.3-1まで実行された場合も想定されたメッセージが返されていることは確認できています。
No.3-1まで必ず実行できるようにするにはどうすればよいでしょうか。
また、このVFページにはapex:selectRadioが配置してあります(選択した値は別のJavascriptメソッド・変数経由でmethod2のparam2に入ります)。
method1実行後、画面上ではラジオボタンの選択がされたままなものの選択された値そのものは空、という状況になっております。
こちらの解消もしたいと思っているので、ご教示いただければと思います。
(先の問題を解消すればこちらも解消されるとは思いますが)
Visualforce
1<apex:page controller="VisualforcePageController" standardStylesheets="true"> 2 <apex:includeScript value="{!$Resource.JavascriptFile}"/> 3 <script> 4 var selectedValue = ''; 5 function selectValue(value){ 6 selectedValue = value; 7 } 8 </script> 9 <apex:outputPanel layout="block" style=""> 10 <apex:form > 11 <apex:pageBlock > 12 <apex:pageBlockSection collapsible="false" columns="1"> 13 <apex:selectRadio onchange="selectValue(this.value)" layout="pageDirection"> 14 <apex:selectOptions value="{!selectList}"/> 15 </apex:selectRadio> 16 <apex:commandButton onclick="method1();" value="実行"/> 17 </apex:pageBlockSection> 18 </apex:pageBlock> 19 </apex:form> 20 </apex:outputPanel> 21</apex:page>
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。