Help us understand the problem. What is going on with this article?

Visualforceのページで selectList の変更に応じて rerender したい時

More than 1 year has passed since last update.

Visualforceのページで、selectListの値の変更に応じて表示させるフォームを変更したい場面があったので
いろいろやってみた話
自分用のメモもかねて記事化

やりたいこと

  • <apex:selectList>の値が変更された時に、フォームを対応するフォームに変更したい

やり方

  • <apex:actionSupport event="onchange" reRender="form"/> 使うと良さそう
  • フォームの項目に必須条件があると rerenderがうまく行かない
  • ので、 <apex:actionRegion>で囲うと部分的にサーバ側に値を送ることができるらしい
    • 簡単に言うとselectlistの部分を囲えば、そこだけ値を送ることができて、うまくrerenderが走る

こんな感じ

<apex:form id="form">
  <apex:pageBlockSection columns="1" title="title">

    <apex:pageBlockSectionItem >
      <apex:outputLabel value="Label 1"/>
      <apex:outputPanel styleClass="requiredInput" layout="block">
        <apex:outputPanel styleClass="requiredBlock" layout="block"/>
        <apex:actionRegion >
          <apex:selectList value="{!hoge}" size="1" multiselect="false">
            <apex:selectOptions value="{!classificationsList}"/>
            <apex:actionSupport event="onchange" reRender="createForm"/>
          </apex:selectList>
        </apex:actionRegion>
      </apex:outputPanel>
    </apex:pageBlockSectionItem>

    <apex:pageBlockSectionItem rendered="{!hoge == 'value1'}">
      <apex:outputLabel value="Label 1" />
      <apex:outputPanel styleClass="requiredInput" layout="block">
        <apex:outputPanel styleClass="requiredBlock" layout="block"/>
        <apex:input value="{!someInput}" type="text" required="true"/> 
      </apex:outputPanel>
    </apex:pageBlockSectionItem>
  <apex:pageBlockSection>
</apex:form>

これで選択リストを変更した時に入力フォームの表示も変更される
あとは、項目とかを適宜追加とかする

参考サイト

とても勉強になる

lifull
日本最大級の不動産・住宅情報サイト「LIFULL HOME'S」を始め、人々の生活に寄り添う様々な情報サービス事業を展開しています。
https://lifull.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした