JSF呈现组件未与ajax调用绑定

JSF呈现组件未与ajax调用绑定,jsf,jsf-2,Jsf,Jsf 2,我需要帮助来呈现一个组件,该组件在呈现后会进行ajax调用,但没有成功。 我有以下不起作用的代码。我不知道我是否错过了什么。非常感谢您的帮助 <h:selectOneMenu id="gender" value="#{bean.gender}" class="form-control" valueChangeListener="#{bean.updateGenderValue}" onchange="submit()"> <f:se

我需要帮助来呈现一个组件,该组件在呈现后会进行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);
      }

public void updateGenderValue(ValueChangeEvent事件)引发IOException{
性别=(字符串)事件。getNewValue();
}
public void updatePregancyValue(AjaxBehaviorEvent事件)引发IOException{
System.out.println(“:(=”+怀孕状态);
}
PregnanceStatus值从未更新过。

您是否错过了
?我在我的项目中复制并粘贴了您的代码,然后

我的代码:

<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”)
@视域
公共类Bean{
私人串孕状态;
私人名单选择;
私人名单性别;
私人字符串性别;
@施工后
public-void initBean(){
选项=新的ArrayList();
genders=新数组列表();
选项。添加(新选择项(“1”);
选项。添加(新选择项(“2”);
选项。添加(新选择项(“3”);
添加(新选择项(“男性”);
添加(新选择项(“女性”);
添加(新选择项(“第三”);
}
公共字符串getPregnanceStatus(){
再次妊娠状态;
}
public void setPregnanceStatus(字符串PregnanceStatus){
this.pregnacystatus=怀孕状态;
}
public void updateGenderValue(ValueChangeEvent事件)引发IOException{
性别=(字符串)事件。getNewValue();
}
public void updatePregancyValue(AjaxBehaviorEvent事件)引发IOException{
System.out.println(“:(=”+怀孕状态);
}
}

您的
onchange=“submit()是什么
do?在OP的问题中不清楚它做了什么。最好让OP创建一个……你不必“尝试”并把事情弄清楚。但是感谢你的帮助!!!我提交的参数列表如下:j_idt9 j_idt9 j_idt9:性别女性j_idt9:j_idt11 3 javax.faces.ViewState 3848250333621752611:-7307645661206570 javax、 faces.source j_idt9:j_idt11 javax.faces.partial.event change javax.faces.partial.execute j_idt9:j_idt11 javax.faces.partial.render j_idt9:j_idt11 javax.faces.behavior.event valueChange javax.faces.partial.ajax trueNo,它做什么?调用了什么javascript?ypu从哪里得到bean?你怎么知道它的os也用什么?啊,好的o调用了javascript。我没有实现onsubmit()函数,因为在我看来它是不需要的。JSF使作业成为是的,但它可能会对操作和混乱做一些事情/因此总是要求一个。节省您猜测和尝试的时间;-)
:( == 2
:( == 3
@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);
    }

}