如何从价值 ?(how to get value from ?)

2019-07-29 09:05发布

我想从价值。 我tryed这个代码,但它不工作:

<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>

控制器:

 //departement change listener
private String comboBox;

public String getComboBox() {
    return comboBox;
}

public void setComboBox(String comboBox) {
    this.comboBox = comboBox;
}

public void departementChangeListener(ValueChangeEvent e) {
    // Skip validation of non-immediate components and invocation of the submit() method.
    FacesContext.getCurrentInstance().renderResponse();
    this.comboBox = e.getNewValue().toString();}

的SourceID = j_idt7:j_idt9 [严重性=(ERROR 2)摘要=(j_idt7:。j_idt9验证错误值不正确)=细节(j_idt7:j_idt9:验证错误值不正确。)]

Answer 1:

你所有的2个问题后,已经。

首先,错误“ERREUR去验证香格里拉valeur EST incorrecte。”这是法国翻译“验证错误:值无效”是指所提交的值不equals()中的可用项目中任一项<f:selectItems> 。 您的代码是不完整的,足以指出根本原因,但我 ,你已经一个List<Department>在那里<f:selectItems value> ,因此每一个产品Department ,但你试图将其设置为String的值id而不是作为Department 。 这个不对。 您需要提供之间的转换器DepartmentString和使用#{departementController.selected}代替。

事情是这样的:

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

private Department selectedDepartment;
private List<Department> availableDepartments;

@FacesConverter之间转换Department和其独特的String表示。

你的第二个问题是,你似乎过分集中于JSF 1.x的有针对性的例子作为对下拉的变化填充另一个领域。 您使用的是相当笨拙/哈克JSF 1.x的该解决方法。 在JSF 2.x中你可以使用<f:ajax>此。

<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();
}

也可以看看:

  • 我们selectOneMenu用于维基页面


文章来源: how to get value from ?