JSF初心者です。
JSF2.2にて、入力フォームの値をAjaxで送り、入力値に対して適切なプルダウンを再表示させる、というものを作っていました。
下記コードのようにボタンを押下するとAjaxでSelectItemを追加するように作成したのですが、submit時にJSFのバリデーションエラーが起きてしまい困っています。。
html
1<h:commandButton action="#{myBean.loadAddressList}" value="リストを更新します"> 2 <f:ajax execute="@this postalCode" render="address" /> 3</h:commandButton> 4<h:inputText id="postalCode" value="#{bean.postalCode}" /> 5<h:selectOneMenu id="address" value="#{bean.address}"> 6 <f:selectItems value="#{bean.addressList}"/> 7</h:selectOneMenu>
Java
1@ManagedBean @RequestScoped 2class Bean { 3 private String postalCode; 4 private String address; 5 private List<SelectItem> addressList; 6 7 //Ajaxで呼び出し、SelectItemのリストをセットするメソッド 8 public void loadAddressList() { 9 //諸々略...postalCodeから表示するAddressListを計算してセットする 10 addressList = new ArrayList<SelectItem>(); 11 addressList.add(new SelectItem("hogehoge","住所候補1です")); 12 addressList.add(new SelectItem("fugafuga","住所候補2です")); 13 } 14}
素人考えなのですが、ページのレンダリング時とSelectItemの内容が違うためバリデーションエラーとなっている、
Ajax処理時にコンポーネントツリーを更新するよう記述すれば良いのでは?と思っているのですが、実装方法が分かりません。。
何かしらご教授いただけると助かります。よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。