Вопрос по jsf – как получить значение из ?

1

Я хочу получить значение от. я пробовал этот код, но он не работает:

<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 [серьезность = (ОШИБКА 2), сводка = (j_idt7: j_idt9 & # xA0 ;: ошибка при проверке. Ошибка оценки.), подробная информация = (j_idt7: j_idt9 & # xA0 ;: ошибка подтверждения Есть неверные.)]

Какую версию JSF вы используете? BalusC
код источника страницы: nouvelle valeur: & lt; / label & gt; & lt; input id = & quot; j_idt7: dep & quot; тип = & Quot; текст & Quot; Имя = & Quot; j_idt7: DEP & Quot; значение = & Quot; & Quot; / & gt; & lt; тип ввода = & quot; скрытый & quot; Имя = & Quot; javax.faces.ViewState & Quot; ID = & Quot; javax.faces.ViewState & Quot; значение = & Quot; -7060370113585400772: -6095599445324372450 & Quot; автополный = & Quot; выключен & Quot; / & GT; Taieb Baccouch
Я использую jpa2.0 + jsf2.0 + ejb3.0 + primefaces3.2 Taieb Baccouch

Ваш Ответ

1   ответ
4

Во-первых, ошибка"erreur de validation. La valeur est incorrecte" который является французским переводом"Validation Error: Value is not valid" означает, что представленное значение не равноequals() любой из доступных предметов в<f:selectItems>, Ваш код недостаточно полон, чтобы указать причину, но яguess что выList<Department> там в<f:selectItems value> и, таким образом, каждый предметDepartment, но вы пытаетесь установить его какString ценностьid а не какDepartment, Это неправильно. Вам нужно поставить конвертер междуDepartment а такжеString и использовать#{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();
}
See also: Our selectonemenu wiki page
Спасибо за помощь :) Taieb Baccouch

Похожие вопросы