You need to sign in to do that
Don't have an account?

apex:paramの使い方
以下のようなVisualforceページを作成しています。
<apex:dataTable value="{!account.Contacts}" var="contact" cellPadding="4" border="1">
<apex:column>
<apex:commandLink> {!contact.Name}
<apex:param value="{!contact.Id}"/> → 意味?
</apex:commandLink>
</apex:column>
</apex:dataTable>
paramタグをdeveloper's guideなどをみて同じように記載して
いるのですが、どういう意味(効果)があるのかわかりません。
また、commandLinkとして取引先責任者の名前が表示されるのですが
そのリンクをクリックしても、該当のページに飛んでくれません。
どのようにすれば該当のページに飛ばせるのでしょうか。
どなたかご教授頂けないでしょうか。
ご迷惑をお掛け致しますが、宜しくお願いいたします。
実際に自分で修正・実行して検証したわけではないですが、次のように修正すれば動くのではないかな、と思います。
それと、apex:param を commandLink や outputLink で使用する意味(用途)についてですが、これは URL に付加するパラメータに動的なデータを挿入したい場合に利用します。
Developer's Guide の apex:param の説明(http://www.salesforce.com/us/developer/docs/pages/Content/pages_compref_param.htm)には下記のような記述例が記載されています。
具体的に、contact.name の値が "David" であった場合、下記のようなリンクが出力されることになります。
# コード部分のURLが、何度直しても勝手にリンクになる・・・
早速のご回答ありがとうございます。
apex:paramタグの意味(用途)は分かりました!!
本当にありがとうございます。
あと、貼り付けたソースなんですが、あれは例として貼り付けたもので、
実際は以下のようなソースです。
【Visualforceページ】
<apex:pageBlockTable title="自分の保守状況" value="{!customobject1}" var="u">
<apex:column >
<apex:facet name="header">問合せ番号</apex:facet>
<apex:commandLink >{!u.name}
<apex:param name="id" value="{!u.id}"/>
</apex:commandLink>
</apex:column>
</apex:pageBlockTable>
【コントローラー】
public List<CustomObject1__c> getCustomObject1(){
return [select Id , Name from CustomObject1__c];
}
ご教授頂いたようにcommandLinkの部分をoutputLinkで試してみたのですが、
文字化けしたページになってしまい上手くいきません・・・。
色々と質問をしてしまって申し訳ないんですが、ご教授頂けませんでしょうか。
宜しくお願い致します。
問い合わせ番号を一覧表示するVisualforceページが文字化けしているということでしょうか?
おそらくスクリプトのエラー画面でしょうから、どこかでエラーが起きているものと思われます。
文字化けした画面で、ブラウザのエンコーディングをUTF-8に変えてあげると、エラーの内容が表示されるかもしれません。
試しに自分の環境で、それっぽく実装してみましたが、正常に動作しました。
正常に動作したソースをそのまま載せておきます。
(オブジェクト名含め、掲示板掲載用の修正は、行っていません。)
【コントローラ】
【ページ】
ブラウザの文字コードをUTF-8にしたら、エラーメッセージが出力されていました。
存在しないページに飛ぼうとしていたみたいでエラーになっていました。
ただ、よく分からないのは、/ (スラッシュ)が入っているかいないかで
エラーになったりする事です。
【自分で作成したページ】
<apex:outputLink value="{!u.id}">{!u.name}
【作成して頂いたページ】
<apex:outputLink value="/{!u.id}">{!u.name}
スラッシュを入れただけで、正常に動作しました。
何故だかお分かりになりますでしょうか?
そういえば、その部分に関して説明をしていませんでした。申し訳ありません。
Force.comに格納されているレコードは、下記のようなURLで詳細画面を表示できます。
「xxxxxxxxxxxxxxx」はオブジェクトのId、「***」は組織が配置されているインスタンス名(na6,na7,ap0など)です。
私が提示したソースでは、このURLを、ホスト名を省略した絶対パスで指定しているため、リンク先が指定したIdの詳細画面になります。
yuukiさんの作成されたソースでは、スラッシュが無いため、相対パス指定となり、おそらく 「https://***.salesforce.com/apex/xxxxxxxxxxxxxxx」といった感じのURLに飛ぼうとしているのではないかと思います。
そこで、ページ名が「xxxxxxxxxxxxxxx」というVisualforceページが無いので、「ページが存在しません」というエラーが出たものと思われます。
# IdをURLに指定すると詳細画面に飛べるという仕様は、どこかのドキュメントで見たような気がしますが、どこで見たのか覚えていません・・・・
ご回答ありがとうございます。
スラッシュを入れる入れないで、ここまで変わるとは
思いませんでした。
勉強になります。
今後とも宜しくお願い致します。