Выберите компонент и отобразите - Ajax - PullRequest
0 голосов
/ 07 августа 2011

Мне нужно вывести текст, выделенный в списке selectOneMenu. Мой код выглядит следующим образом:

<h:selectOneMenu value="#{DataForm.stationed}" id="globalFilter" onchange="carsTable.filter()" style="width:350px;font-size:13px;"  >
    <f:selectItems value="#{DataForm.listHotel}" var="user" itemValue="#{user[1]}" itemDisabled="false" itemLabel="#{user[1]}" />
    <h:outputText value="#{carsTable[1]}" style="width:350px"/>
</h:selectOneMenu>

Как мне это написать?

EDIT

Этот список находится в пределах <datatable>

<h:body>
    <h:form id="form1" >
        <p:dataTable var="car" value="#{DataForm.listHotels}" widgetVar="carsTable" paginator="true" rows="10" onRowSelectComplete="carDialog.show()" emptyMessage="No hospital found with given criteria" selectionMode="single" onRowSelectUpdate="growl" style="width:1400px;font-size:13px;">

            <h:selectOneMenu value="#{DataForm.stationed}" id="globalFilter" onchange="carsTable.filter()" style="width:350px;font-size:13px;"  >
                <f:selectItems value="#{DataForm.listHotel}" var="user" itemValue="#{user[1]}" itemDisabled="false" itemLabel="#{user[1]}" />
                <h:outputText value="#{carsTable[1]}" style="width:350px"/>
            </h:selectOneMenu>

        </p:dataTable>

        <f:ajax render= "@form1" >
            <h:selectOneMenu value="#{DataForm.stationed}">
                <f:selectItems value="#{DataForm.listHotels}" var="item" itemValue="#{DataForm.listHotels}" itemLabel="#{DataForm.listHotels}" />
            </h:selectOneMenu>
        </f:ajax>
    </h:form>
</h:body>

1 Ответ

0 голосов
/ 07 августа 2011

Я думаю, вы должны сначала удалить вложенный <h:outputText/>, в этой позиции это не имеет смысла.Кроме того, из вашего кода вопроса и примера не совсем понятно, что PrimeFaces имеет к этому отношение.

Чтобы вывести выбранное значение, просто выведите выражение #{DataForm.stationed}, так как это связывание, котороеполучит выбранное значение.

Следующий пример демонстрирует это через AJAX, но он будет работать точно так же, если вы используете действие и отправку обычной формы.

Facelet

<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core">
    <h:head />

    <h:body>

        <h:form id="form">

            <f:ajax render="form">
                <h:selectOneMenu value="#{selectOneMenuBean.value}">
                    <f:selectItems value="#{selectOneMenuBean.items}" var="item" itemValue="#{item}" itemLabel="#{item}" />
                </h:selectOneMenu>
            </f:ajax>

            Selected value: #{selectOneMenuBean.value}

        </h:form>

    </h:body>
</html>

Bean

@ViewScoped
@ManagedBean
public class SelectOneMenuBean {

    private List<String> items = Arrays.asList("a", "b", "c");
    private String value;

    public List<String> getItems() {
        return items;
    }

    public String getValue() {
        return value;
    }

    public void setValue(String value) {
        this.value = value;
    }

}

ps В вашем примере кода имена EL для ваших бинов начинаются с заглавной буквы.Это немного против типичных условностей.Кроме того, вы можете обратить внимание на свои имена и типы.Бин возвращает что-то с именем listHotel, но это присваивается переменной с именем user, которая затем индексируется целым числом.Я бы порекомендовал выровнять имена (например, имя коллекции = users, имя переменной user) и использовать свойства вместо индексов (например, user.name).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...