1. TomoShiozawa

    No comment

    TomoShiozawa
Changes in body
Source | HTML | Preview
@@ -1,56 +1,55 @@
Visualforceのページで、selectListの値の変更に応じて表示させるフォームを変更したい場面があったので
いろいろやってみた話
自分用のメモもかねて記事化
### やりたいこと
- `<apex:selectList>`の値が変更された時に、フォームを対応するフォームに変更したい
### やり方
- `<apex:actionSupport event="onchange" reRender="form"/>` 使うと良さそう
- フォームの項目に必須条件があると `rerender`がうまく行かない
- ので、 `<apex:actionRegion>`で囲うと部分的にサーバ側に値を送ることができるらしい
- 簡単に言うとselectlistの部分を囲えば、そこだけ値を送ることができて、うまくrerenderが走る
こんな感じ
```xml
<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>
```
これで選択リストを変更した時に入力フォームの表示も変更される
あとは、項目とかを適宜追加とかする
### 参考サイト
とても勉強になる
- http://tyoshikawa1106.hatenablog.com/entry/2015/01/24/003519
- https://qiita.com/hrk623/items/cb5a7f253dd25887beb4