JSF - обновлять строки в базе данных без формы - PullRequest
1 голос
/ 15 марта 2012

Меня интересует, возможно ли создать h:selectOneMenu, который можно использовать для обновления строк в базе данных без использования формы.Примерно так:

                            <h:selectOneMenu value="#{ApplicationController.setting['SessionTTL']}" onclick="#{ApplicationController.Updatesetting(SessionTTL)}">
                                <f:selectItem itemValue="#{ApplicationController.setting['SessionTTL']}" itemLabel="#{ApplicationController.setting['SessionTTL']}" />
                                <f:selectItem itemValue="two" itemLabel="Option two" />
                                <f:selectItem itemValue="three" itemLabel="Option three" />
                                <f:selectItem itemValue="custom" itemLabel="Define custom value" />
                            </h:selectOneMenu>

Другими словами, если значение в h:selectOneMenu изменено, атрибут onclick вызывает метод Java, который выполняет запрос SQL с новым выбранным значением.Есть ли какой-нибудь пример?

С наилучшими пожеланиями, Питер

1 Ответ

1 голос
/ 15 марта 2012

Нет, невозможно вызывать методы действия bean без формы. Вам определенно нужно <h:form>. Вместо того подхода onclick, который никак не будет работать (JS работает на клиенте, а не на сервере), вам нужен <f:ajax>. Он имеет атрибут listener, который позволяет вам указать метод действия bean-компонента, который должен вызываться при событии ajax.

<h:form>
    <h:selectOneMenu value="#{ApplicationController.setting['SessionTTL']}">
        <f:selectItem itemValue="#{ApplicationController.setting['SessionTTL']}" itemLabel="#{ApplicationController.setting['SessionTTL']}" />
        <f:selectItem itemValue="two" itemLabel="Option two" />
        <f:selectItem itemValue="three" itemLabel="Option three" />
        <f:selectItem itemValue="custom" itemLabel="Define custom value" />
        <f:ajax listener="#{ApplicationController.Updatesetting('SessionTTL')}" />
    </h:selectOneMenu>
</h:form>

(кстати, имя метода в верхнем регистре не соответствует соглашению о присвоении имен, я бы предложил использовать его в нижнем регистре; то же самое относится и к имени управляемого компонента)

Если вы можете, я бы предложил сделать шаг назад и изучить основные принципы веб-разработки, такие как HTTP, HTML, CSS и JavaScript. Затем вам нужно правильно понять, что JSF - это основанная на компонентах инфраструктура MVC, которая автоматически генерирует весь этот код HTML / CSS / JS и учитывает всю обработку запросов / ответов HTTP.

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