function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
NDS.ENDONDS.ENDO 

extensions(APEX)からVisualfoce(PDF)への戻り値設定について

当方、まだまだ素人の域をでておりませんが、

Visualfoceを用い、カスタムオブジェクトに登録されている、あるレコードの内容をPDF出力を試みています。

この際、extensions(APEX)で編集した内容をVisualfoce(PDF)へ出力したいと思っていますが、

思い通りに行きません。

 

処理を実行すると、

Illegal view ID 笆。 遉セ蜀�イゥ菫�シ医Ο繝シ繝ゥ繝シ遲会シ峨縲笆 蟇セ螟悶く繝」繝ウ繝壹�繝ウ縲縲笆。 蟇セ螟 繧、繝吶Φ繝. The ID must begin with /

と言うエラーになります。

 

 

extensions(APEX)側の処理はうまく行っているように思えます。

ページ(PDF)表示する際、文字化けしていますが、

"■ 社内販促  □ 対外キャンペーン  □ 対外 イベント"の結果を戻しているようです。

 

 

何がいけないのでしょうか。

 

-----Visualforceページ-----

 

 

<apex:page standardController="SalesPromotion__c"  extensions="SalesPromotionApplForm_ExCtl2" showHeader="false" renderAs="pdf" 
    action="{!getLine}">

 

  <table>

    <tr>

      <td > {!Line}

    </tr>

  </table>

 

-----extensions-----

 

 

public class SalesPromotionApplForm_ExCtl2 {

 

    /** 選択中のレコード */

    private SalesPromotion__c SalesPromotion;

    public String Line;

 

    public SalesPromotionApplForm_ExCtl2(ApexPages.StandardController controller) {

        this.SalesPromotion = (SalesPromotion__c) controller.getRecord();

    }

 

    public String getLine() {

 

        String soql = Helper.createSOQL(SalesPromotion.getSObjectType());

        soql += ' Where Id = \'' + SalesPromotion.Id + '\'';

        SalesPromotion = Database.query(soql);

 

        if(SalesPromotion.salesPromotion_Division__c =='社内販促'){

            Line = '■ 社内販促  □ 対外キャンペーン  □ 対外 イベント';

        } else {

            Line = '□ 社内販促  □ 対外キャンペーン  □ 対外 イベント';

        }

    return Line;

    }

 

}

 

Best Answer chosen by Admin (Salesforce Developers) 
tajimatajima

 

どこのエラーが画面上に報告されているのかが不明ですが、このコードを実行するとエラーになりそうな箇所が2カ所あります。
まず、<apex:page>のaction属性に指定するメソッドは戻り値がvoidかPagereference型である必要があります。
それから、public String Line;をVisualforceページから参照するには、public String Line{get; private set;} のように、getterを実装する必要があります。
getLine()で行っている処理をコンストラクタ内に実装し、getLine() を削除。さらに<apex:page>のaction属性を削除してみてはいかがでしょうか?

 

どこのエラーが画面上に報告されているのかが不明ですが、このコードを実行するとエラーになりそうな箇所が2カ所あります。


まず、<apex:page>のaction属性に指定するメソッドは戻り値がvoidかPagereference型である必要があります。


それから、public String Line;をVisualforceページから参照するには、public String Line{get; private set;} のように、getterを実装する必要があります。

getLine()で行っている処理をコンストラクタ内に実装し、getLine() を削除。さらに<apex:page>のaction属性を削除してみてはいかがでしょうか?

All Answers

tajimatajima

 

どこのエラーが画面上に報告されているのかが不明ですが、このコードを実行するとエラーになりそうな箇所が2カ所あります。
まず、<apex:page>のaction属性に指定するメソッドは戻り値がvoidかPagereference型である必要があります。
それから、public String Line;をVisualforceページから参照するには、public String Line{get; private set;} のように、getterを実装する必要があります。
getLine()で行っている処理をコンストラクタ内に実装し、getLine() を削除。さらに<apex:page>のaction属性を削除してみてはいかがでしょうか?

 

どこのエラーが画面上に報告されているのかが不明ですが、このコードを実行するとエラーになりそうな箇所が2カ所あります。


まず、<apex:page>のaction属性に指定するメソッドは戻り値がvoidかPagereference型である必要があります。


それから、public String Line;をVisualforceページから参照するには、public String Line{get; private set;} のように、getterを実装する必要があります。

getLine()で行っている処理をコンストラクタ内に実装し、getLine() を削除。さらに<apex:page>のaction属性を削除してみてはいかがでしょうか?

This was selected as the best answer
NDS.ENDONDS.ENDO

ありがとうござました。

無事対応出来ました。