Нет, невозможно вызывать методы действия 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.