Обнаружение изменения значения в <h: selectOneMenu> внутри <tr: table>

Вот такая таблица:

<h:panelGroup rendered="#{ImportFromCSVFile.step2Visible}">
    <div style="width: 100%; overflow: auto; max-height: 400px;">
        <tr:table id="step2ColumnMappings" var="columnMappingEntry" rows="0" rowBandingInterval="1" value="#{ImportFromCSVFile.columnMappings}">
            <tr:column>
                <tr:outputLabel value="#{columnMappingEntry.columnIndex}"/>
            </tr:column>
            <tr:column>
                <tr:outputLabel value="#{columnMappingEntry.columnValue}"/>
            </tr:column>
            <tr:column>
                <h:selectOneMenu value="#{columnMappingEntry.columnType}" validator="#{ImportFromCSVFile.validateColumnType}" onchange="submit()" valueChangeListener="#{ImportFromCSVFile.columnMappingChanged}">
                    <f:selectItems value="#{ImportFromCSVFile.columnsToBeMapped}" />
                </h:selectOneMenu>
            </tr:column>
        </tr:table>
    </div>
</h:panelGroup>

который отображает (правильно) в виде таблицы с тремя столбцами: текст в первых двух и выпадающие в последнем. выпадающие списки также правильно инициализируются на основе значений в модели.

Что мне нужно сделать, так это уметь запускать логику каждый раз, когда изменяется значение в любом из выпадающих списков. Я думал об использовании valueChangeListener на selectOneMenu, как вы можете видеть в коде, но он не вызывается. Единственное, что приходит на ум сейчас - это работа с параметрами POST при отправке формы, что не будет оптимальным.

Ты знаешь, как я могу получить valueChangeListener работать в этом контексте? JSF 1.2. Возможно, мне не хватает очевидного или известного решения, но, к сожалению, у меня очень мало предыдущего опыта работы с JSF и я не работаю с ним на регулярной основе.

Заранее большое спасибо!

xmlns:h="http://java.sun.com/jsf/html"xmlns:tr="http://myfaces.apache.org/trinidad"

2 ответа

Вызов функции javascript, подобный тому, который вы упомянули во фрагменте кода, не отправит вашу форму.

valuechange

слушатель, вам нужно отправить запрос к компоненту поддержки, который проверит логику вашего уровня приложения. Вы можете попробовать удалить

по щелчку

атрибут, а также, пожалуйста, поместите сообщение, как вы разместили

валидатор

, Иногда бывает так, что, когда проверка не удалась, и вы не прикрепили соответствующее сообщение или уведомление для того же самого, требуемое действие не будет выполнено. Так что, хотя ваша логика может быть записана, но жизненный цикл JSF прерывается на

этап проверки

и ваше оставшееся действие не вызывается.

Другие вопросы по тегам