Jsf 如何从<;h:selectOneMenu>;?

Jsf 如何从<;h:selectOneMenu>;?,jsf,selectonemenu,Jsf,Selectonemenu,我想从中获取值。我尝试过此代码,但不起作用: <h:form> <h:outputLabel value="départements : "/> <h:selectOneMenu value="#{departementController.selected.id}" onchange="submit()" immediate="true"> <f:valueChangeListener type=

我想从中获取值。我尝试过此代码,但不起作用:

<h:form>
        <h:outputLabel value="départements : "/>
        <h:selectOneMenu value="#{departementController.selected.id}" onchange="submit()" immediate="true">
            <f:valueChangeListener type="Controller.Listener.DepartementValueListener"/>
            <f:selectItems value="#{departementController.itemsAvailableSelectOne}"/>
        </h:selectOneMenu>

        <h:outputLabel value="nouvelle valeur : "/>

        <h:inputText value="#{departementController.comboBox}" id="dep"/>
    </h:form>

sourceId=j_idt7:j_idt9[严重性=(错误2),摘要=(验证错误。验证错误。),细节=(j_idt7:j_idt9:验证错误。验证错误。)

您已经解决了所有2个问题

首先,错误“erreur de validation.La valeur est incorrecte”是“validation error:Value is not valid”的法语翻译,意思是提交的值不等于
中的任何可用项。您的代码不够完整,无法指出根本原因,但我猜您在
中有一个
列表,因此每个项目都是
部门
,但您试图将其设置为
字符串
值,而不是
部门
。这是不对的。您需要在
部门
字符串
之间提供一个转换器,并改用
{departmentcontroller.selected}

大概是这样的:

<h:selectOneMenu value="#{bean.selectedDepartment}">
    <f:selectItems value="#{bean.availableDepartments}" />
</h:selectOneMenu>

另见:

    • 毕竟你有两个问题

      首先,错误“erreur de validation.La valeur est incorrecte”是“validation error:Value is not valid”的法语翻译,意思是提交的值不等于
      中的任何可用项。您的代码不够完整,无法指出根本原因,但我猜您在
      中有一个
      列表,因此每个项目都是
      部门
      ,但您试图将其设置为
      字符串
      值,而不是
      部门
      。这是不对的。您需要在
      部门
      字符串
      之间提供一个转换器,并改用
      {departmentcontroller.selected}

      大概是这样的:

      <h:selectOneMenu value="#{bean.selectedDepartment}">
          <f:selectItems value="#{bean.availableDepartments}" />
      </h:selectOneMenu>
      

      另见:

      您使用的是哪一个JSF版本?我使用的是jpa2.0+jsf2.0+ejb3.0+primefaces3.2页面的代码源:nouvelle valeur:您使用的是哪一个JSF版本?我使用的是jpa2.0+jsf2.0+ejb3.0+primefaces3.2页面的代码源:nouvelle valeur:将侦听器移动到支持bean中,通过所选项目可在其
      部门
      表单中直接获得。但是,如果您想要一个
      通用的
      监听器,它可以在任何selectOneMenu(独立于特定的支持bean)上为您完成任务,该怎么办?将监听器移动到支持bean中,可以使所选项直接在其
      部门
      表单中可用,从而大大简化问题。但是如果您想要一个
      通用的
      监听器,它可以在任何selectOneMenu上为您完成任务(独立于特定的支持bean),该怎么办?
      
      private Department selectedDepartment;
      private List<Department> availableDepartments;
      
      <h:selectOneMenu value="#{bean.selectedDepartment}">
          <f:selectItems value="#{bean.availableDepartments}" />
          <f:ajax listener="#{bean.changeDepartment}" render="inputId" />
      </h:selectOneMenu>
      <h:inputText id="inputId" value="#{bean.input}" />
      
      public void changeDepartment() {
          input = selectedDepartment.getId();
      }