0

カスタム オブジェクト レコードを検索する動的検索ページを作成しました。SOQL クエリを使用して、結果をデータ テーブルにバインドします。返された値に基づいて、列の 1 つで出力テキストを変更する必要があります。

例: SOQL が「Tiger」を返した場合、「Animal」、「eagle」の場合は「Bird」などを表示する必要があります。

だから私の質問は、Apex:column の値属性で Javascript 関数を使用できるかどうかだと思いますか? 何かのようなもの:

 <apex:column value="renameObjectType({!mt.objectName__c})">

renameObjectType 関数は次のようなものです。

function renameObjectType(val) 
            {            
              var inputtextvalue=val.value;            

              if(inputtextvalue.length>0)
              {
                  if(inputtextvalue=="Tiger")
                  return "Animal";                  
              }

            };

これは私が望んでいるように機能していません...これは可能ですか?

ありがとう、カルビン

4

2 に答える 2

1

認識すべきことの 1 つは、(構文を使用して) コントローラーから値をマージするたびに{!myApexVariable}、Visualforce が実際にその変数のゲッターを呼び出していることです。

これは、そのように変数をマージするときはいつでも、すでに関数を呼び出していることを意味します。実際、Visualforce を「だまして」、関数の値を単純に表示させるには、次のようにします。

*My_VF_Page.page*

<apex:outputText value="{!MyFormattedValue}" />

*My_VF_Controller.apex*

public String getMyFormattedValue() {
    if (someOtherValue== null || someOtherValue== '') {
        return "N/A";
    }
    return someOtherValue;
}

Visualforce ページを読み込むときに気付くのはgetMyFormattedValue()、ページが に関する情報を取得する必要があるたびに が実行されることMyFormattedValueです。このトリックは、関数の値を出力するのに非常に便利であることがわかりました。

于 2012-04-20T16:49:58.037 に答える
1

これは、便利なラッパー クラスを呼び出します。Visualforce では、バックグラウンドで多くの処理が行われているため、 JavaScriptは実行順序に関して扱いにくい場合があります。まだ行っていない場合は、標準の連絡先詳細ページでソースを表示して、ブラウザー側の処理がどの程度進んでいるかを確認してください。

このようなことに対する最も安全で、最速で、最も予測可能なパスは Apex です。

于 2012-04-15T22:18:42.000 に答える