0

salesforce では、フォームに複数選択のピックリストを事前入力する URL を作成しようとしています。基本的に、アカウントの [新しいミーティング] ボタンを押すと、新しいイベントにリダイレクトされます。PageReference リダイレクトは、事前操作のパラメーターを含む URL を持つ PageReference インスタンスを返します。ただし、複数選択ピックリストには最初の選択のみが入力されています。例えば:

構築された URL の文字列:

url = 'https://cs11.salesforce.com/00U/e?00NZ0000000LdLp=401%28a%29&00NZ0000000LdLp=401%28k%29';

複数選択リストのフィールド ID は 00NZ0000000LdLp で、上記の URL で繰り返されているため、選択されたフィールドは 401(a) および 401(k) として入力されます。

その後、リダイレクト メソッドは以下を返します。

return new PageReference( url );

[新しい会議] ボタンをクリックすると、401(a) のみが選択されます。その組み込み URL をコピーしてアドレス バーに貼り付けるだけで、401(a) と 401(k) の両方が選択されます。PageReference がデータを切り取るのはなぜですか?

4

1 に答える 1

1

ページ参照が URL パラメータを格納する方法に関係があるのではないかと思います。これらのパラメーターをマップに保存します。つまり、パラメーター名を複数回繰り返すと上書きされます。それは以下と同等のことをします:

mapParams.put('00NZ0000000LdLp','401(a)'); mapParams.put('00NZ0000000LdLp','401(k)');

URL パラメーターを自分で追加して、以下のようなことを行ったほうがよい場合があります。

PageReference ref = 新しい PageReference(url); ref.getParmeters().put('00NZ0000000LdLp', '401(a)&00NZ0000000LdLp=401(k)');

上記は単なる提案です。URLエスケープがこのアイデアにどのように影響するかはわかりませんが、元の質問に答えるために、PageReferenceオブジェクトでマップを使用すると、選択した値が1つしか得られない可能性が高いと思います.

于 2012-10-25T00:38:44.670 に答える