2

「キー」を引数として受け取り、SQOL を使用してデータを取得する関数 searchWorkByName があります。

Visualforce 側には、searchWorkByName を呼び出すリンクがありますが、文字「a」などの引数を渡せるようにしたいと考えています。

例(これはエラーをスローします)

<apex:commandLink value="search!" action="{!searchWorkByName('aaa')}" />

そうでない場合、代替手段は何ですか?

頂点クラス

public class SearchWorkTest { 

    public PageReference searchWorkByName(String key) {

            //find record of work names starting from provided key character
            workNames = [select name from work__c where work__c.name like 'key%'];
            return Page.searchResult;   
     }
}

ビジュアルフォース

<apex:page standardController="work__c" extenstions="SearchWorkTest">
  <!-- Is it possible to pass argument like 'foo' ? -->
  <apex:commandLink value="search!" action="{!searchWorkByName}" />
</apex:page>
4

2 に答える 2

10

ページから次のような関数にパラメータを渡すことができます。

<apex:commandLink value="search!" action="{!searchWorkByName}">
  <apex:param name="key" value="val"/>
</apex:commandLink>

明らかに、この場合のパラメータの値は固定されています。動的なものが必要な場合(つまり、ユーザーが何かを入力し、それが関数に渡される場合)、それをどのように行うかは100%わかりませんが、可能かもしれないと思います。しかし、解決策はすでにあなたのために猫の皮を貼っていますが、それが何らかの用途である場合に備えて、私は別の方法でフォローアップすると思いました。

于 2010-11-05T10:30:00.197 に答える
5

いいえ、そのようなアクションに引数を渡すことはできません。

1つのオプションは、この変数を、ユーザーがテキストを入力したり、ドロップダウンから選択したりできる通常のフォームフィールドにすることです.Apexで変数に同じ名前を使用する場合(およびセッター/ゲッターによって公開される場合)、これは機能します問題なく。Salesforce を Google マップと統合するにはどうすればよいですか?で私の回答を確認してください。始めます。

2 番目のオプション - この検索を、ユーザーが何もクリックしなくてもプログラムで何らかの方法で実行する必要がある場合、たとえばデータがページ自体から取得される場合 (つまり、<apex:repeat>タグで読み込まれる場合)...小さなヘルパー ページとコントローラーを作成し、それらを次のように呼び出すことができます。コンポーネント。コンポーネントにデータを渡すことに問題はありません。<apex:component>とのドキュメントを確認してください<apex:componentBody>。しかし、最初の回答があなたにとって最も役立つと思います。

幸運を!

于 2010-11-04T11:48:44.203 に答える