0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Visualforceページで意味不明のエラー発生時の対処

Posted at

あるExperienceCloudサイトのVisualforceページ改修で意味不明のエラーを遭遇、
その時に対応内容をメモっておきます。

要約

Experience Cloud上で、Visualforceページを利用して、データ登録プログラムを実装。
登録処理で入力チェックを行い、入力エラーがある場合は、

ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.WARNING, 'エラーメッセージ'));
return null;

で元の画面に戻るようしていますが、
実際には下記のエラー画面が表示されてしまいます。

image.png

System.debugを「return null;」前に入れてみましたが、ちゃんと出力されているので
return null;は確実に実行されている。

デバッグログでの出力を時間順で見ると
操作の列は
/apex/xxxScreenName の次に
/apex/Exception  がありその後に何らかのエラーが発生したよう見える、

中身を見てもエラーのようなものは見つかりませんでした。

Chromeの開発ツールから見ると戻り値のHttpコードは500:Internal Server Errorとなっています。
おそらくページの処理は終わり、その後ブラウザー側に戻す前になにかが発生したはず・・・

疑問

上記のVisualforceページで発生したエラーはどこかで見れるようにできますか?

いろいろググって

ExperienceCloudのサイトの指定で標準のエラーページの指定があり、
その指定したページを編集して、エラーの説明を出力できることが分かった。

手順

1.設定 ⇒ ユーザーインターフェース ⇒ サイトおよびドメイン ⇒ サイト
2.サイトの表示ラベル列で、対象のサイト名をクリック
3.エラーページセクションで、汎用エラーページの「サイトページ名」をクリック

image.png

4.表示されるVisualforceページで「編集」ボタンをクリックし下記のように修正

<apex:param value="{!$Site.ErrorMessage}"/>

<apex:param value="{!$Site.ErrorDescription}"/>

に変更する。

<apex:page showHeader="false" title="{!$Label.site.error2}" cache="false">
  <apex:composition template="{!$Site.Template}">
    <apex:define name="body">
      <center>
        <apex:panelGrid bgcolor="white" columns="1" style="align: center;">
          <br/>
          <br/>
          <apex:panelGrid width="758" cellpadding="0" cellspacing="0" bgcolor="white" columns="1" styleClass="topPanelContainer">
            <br/>
            <apex:outputPanel layout="block" styleClass="topPanel">
              <apex:panelGrid width="758" cellpadding="0" cellspacing="0" bgcolor="white" columns="3">
                <apex:image url="{!URLFOR($Resource.SiteSamples, 'img/clock.png')}"/>
                <apex:image url="{!URLFOR($Resource.SiteSamples, 'img/warning.png')}"/>
                <apex:panelGroup >
                  <apex:outputText styleClass="title" value="{!$Label.site.error}">
                   
                   <!-- this parameter needs to be italic in the site.error label 
                   <apex:param value="{!$Site.ErrorMessage}"/>
                   -->
                   <apex:param value="{!$Site.ErrorDescription}"/>
                  </apex:outputText>
                  <br/>
                  <br/>
                </apex:panelGroup>
              </apex:panelGrid>
             </apex:outputPanel>
            <c:SitePoweredBy />
          </apex:panelGrid>
          <br/>
          <apex:messages />
          <br/>
        </apex:panelGrid>
      </center>
    </apex:define>
  </apex:composition>
</apex:page>

5.保存して閉じる、
6.テスト画面に戻って再度実行してみると、エラーの内容が表示されるようになった。

image.png

エラーの内容は分かったので、次は何とかできるでしょう。
エラーが解決できたらまた内容を追記しておきます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?