2017-11-12 12 views
0

レンダリングされたが成功しなかったコンポーネントをレンダリングして、ajaxコールを作成するのに助けが必要です。 次のコードは動作しません。私は何かが欠けているかどうかは分かりません。どんな助けも高く評価されます。JSFレンダリングされたコンポーネントがajaxコールとバインドしない

<h:selectOneMenu id="gender" value="#{bean.gender}" 
    class="form-control" 
    valueChangeListener="#{bean.updateGenderValue}" 
    onchange="submit()"> 

    <f:selectItems value="#{bean.genders}" var="gender" itemLabel="# 
     {gender}" itemValue="#{gender}"/>                
</h:selectOneMenu> 

<h:selectOneMenu value="#{bean.pregnancyStatus}" 
    class="form-control" 
    rendered="#{bean.gender eq 'Female'}"> 
    <f:selectItems value="#{bean.options}" 
     var="pregnancyStatus" itemLabel="#{pregnancyStatus}" 
     itemValue="#{pregnancyStatus}"/> 

    <f:ajax listener="#{bean.updatePregancyValue}" 
      execute="@this" render="@this"/> 

</h:selectOneMenu> 


public void updateGenderValue(ValueChangeEvent event) throws IOException { 
    gender = (String) event.getNewValue(); 
} 

     public void updatePregancyValue(AjaxBehaviorEvent event) throws IOException {                    
     System.out.println(":(== " + pregnancyStatus); 
     } 

pregnancyStatusの値は決して更新されません。

答えて

1

<h:form>が見つかりませんでしたか?私はコピーして自分のプロジェクトにコードを貼り付け

私のコード:

:(== 2 
:(== 3 

豆:

<div style="height:500px"> 
<h:form> 

<h:selectOneMenu id="gender" value="#{bean.gender}" 
class="form-control" 
valueChangeListener="#{bean.updateGenderValue}" 
onchange="submit()"> 



<f:selectItems value="#{bean.genders}" var="gender" itemLabel="# 
     {gender}" itemValue="#{gender}"/>                
</h:selectOneMenu> 

<h:selectOneMenu value="#{bean.pregnancyStatus}" 
    class="form-control" 
    rendered="#{bean.gender eq 'Female'}"> 
    <f:selectItems value="#{bean.options}" 
     var="pregnancyStatus" itemLabel="#{pregnancyStatus}" 
     itemValue="#{pregnancyStatus}"/> 

    <f:ajax listener="#{bean.updatePregancyValue}" 
      execute="@this" render="@this"/> 

</h:selectOneMenu> 

がコンソールをチェックすることができます

@ManagedBean(name = "bean") 
@ViewScoped 
public class Bean { 

    private String pregnancyStatus; 
    private List<SelectItem> options; 
    private List<SelectItem> genders; 
    private String gender; 

    @PostConstruct 
    public void initBean(){ 
     options = new ArrayList<>(); 
     genders = new ArrayList<>(); 
     options.add(new SelectItem("1")); 
     options.add(new SelectItem("2")); 
     options.add(new SelectItem("3")); 
     genders.add(new SelectItem("Male")); 
     genders.add(new SelectItem("Female")); 
     genders.add(new SelectItem("third")); 
    } 

    public String getPregnancyStatus() { 
     return pregnancyStatus; 
    } 

    public void setPregnancyStatus(String pregnancyStatus) { 
     this.pregnancyStatus = pregnancyStatus; 
    } 

    public void updateGenderValue(ValueChangeEvent event) throws IOException { 
     gender = (String) event.getNewValue(); 
    } 

    public void updatePregancyValue(AjaxBehaviorEvent event) throws IOException { 
     System.out.println(":(== " + pregnancyStatus); 
    } 

} 
+0

何をあなたの 'のonchange = OPの質問には何があるのか​​はっきりしていません。OPに[mcve]を作成するように依頼する方がいいです... "試してみる"必要はありません。物事は明らかです。しかし、助けてくれてありがとう! – Kukeltje

+0

このような提出ルックスで私のパラメータリスト:j_idt9 \t j_idt9 j_idt9:性別\t女性 j_idt9:j_idt11 javax.faces.ViewState \t 3848250333621752611:-7307656456661206570 javax.faces.source \t j_idt9:j_idt11 javaxの。 faces.partial.event \t変更 javax.faces.partial.execute \t j_idt9:j_idt11 javax.faces.partial.render \t j_idt9:j_idt11 javax.faces.behavior.event \tとvalueChange javax.faces.partial.ajax \t true – pwain

+0

いいえ、それは何ですか**しますか?どのようなJavaScriptが呼び出されますか?そしてypuはどこから豆を手に入れましたか?あなたはそれがOPの使い方をどのように知っていますか? – Kukeltje

関連する問題