5
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【VisualForce】演算子 '=' のパラメータ種別が間違っています。期待テキスト、受信数字

Last updated at Posted at 2021-02-05

演算子 '=' のパラメータ種別が間違っています。期待テキスト、受信数字

VisualForceでちょっと詰まったので備忘録。

親page

<apex:variable var="pageNumber" value="1" />
<!-- repeatというループすることができるVisualForceのタグ -->
<apex:repeat value="{!viewModel.displayListEachPage}" var="displayList">
  <!-- コンポーネント呼び出し -->
  <c:COMPONENT pageNumber='{!pageNumber}' />
  <!-- pageNumberをインクリメント -->
  <apex:variable var="pageNumber" value="{!VALUE(pageNumber)+1}" />
</apex:repeat>

親ページからコンポーネントにpageNumberを渡す

component
<apex:component>
  <!-- 親ページからページ数をもらうとする。型はInteger、必須項目 -->
  <apex:attribute name="pageNumber" type="Integer" description="ページ数" required="true" />

  <!-- outputPanelのrenderedでIF関数を使用 -->
  <apex:outputPanel rendered="{!IF(pageNumber == 1, true, false )}">
   こんにちは
  </apex:outputPanel>
</apex:component>

attributeというタグで親ページからpegeNumberを受け取る。
outputPanelのrenderedという属性を使用してタグで囲ったコンテンツを描画するかどうか判別できる。

エラー

画面を表示するとエラーが表示された。

演算子 '=' のパラメータ種別が間違っています。期待テキスト、受信数字
component c:COMPONENT のコンポーネント <apex:outputPanel> の式「{!IF(pageNumber == 1, true, false)}」にエラーがあります。

期待するのはテキストですよ。指定されているのは数字になってますよ。

と言ってそう。

デプロイエラー

VisualForce
  <apex:outputPanel rendered="{!IF(pageNumber == '1', true, false )}">
  </apex:outputPanel>

1をStringにした。

演算子 '<>' のパラメータ種別が間違っています。期待数字、受信テキスト

デプロイが通らない。

このやり方だといけたみたいな記事も見た

VisualForce
  <apex:outputPanel rendered="{!(pageNumber == '1'}">
  </apex:outputPanel>

できない。

解決策

VisualForce
<apex:component>
  <!-- 型をString -->
  <apex:attribute name="pageNumber" type="String" description="ページ数" required="true" />

  <!-- 数字をStringにした -->
  <apex:outputPanel rendered="{!IF(pageNumber == '1', true, false )}">
    こんにちは
  </apex:outputPanel>
</apex:component>
  • apex:attributeのtype属性をIntegerからStringに変更
  • apex:outputPanelのIF関数で等価する値をStringにする

image.png
表示された

IF関数を省略するしても大丈夫。

VisualForce
  <apex:outputPanel rendered="{!(pageNumber == '1'}">
  </apex:outputPanel>
5
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?