могу ли я написать actionListner или действие для ‹h:commandButton type =submit›

Мне нужно выполнить метод поддерживающего компонента, используя <h:commandButton type="submit"> в следующей форме:

<h:form id="login" prependId="false" onsubmit="document.getElementById('login').action='j_security_check';">

    <h:commandButton type="submit">  

</h:form>

Я пытался определить action, а также actionListner, однако метод поддерживающего компонента никогда не выполнялся. Как я могу этого добиться?


person nrupen    schedule 19.07.2013    source источник


Ответы (1)


Это не удалось, потому что вы изменили URL-адрес действия формы на URL-адрес, отличный от JSF. Этот URL-адрес никогда не попадает в FacesServlet и, следовательно, он не сможет декодировать, поставить в очередь и вызвать действие командной кнопки. Полностью избавьтесь от атрибута onsubmit (и желательно также от prependId). Затем он отправит правильный URL-адрес JSF и вызовет действие командной кнопки.

<h:form id="login">

Если вы собираетесь выполнять аутентификацию, управляемую контейнером, с помощью JSF, перейдите к следующему ответу: Выполнение аутентификации пользователя в Java EE / JSF с использованием j_security_check, чтобы узнать, как правильно использовать j_security_check без необходимости действия командной кнопки JSF, а также сделать это программно в методе действия командной кнопки JSF вместо того, чтобы пытаться отправить прямо на j_security_check.

Кстати, <h:commandButton type> по умолчанию уже submit. Просто не повторяйте значения по умолчанию и не добавляйте их в свой код, чтобы он был коротким и чистым.

person BalusC    schedule 19.07.2013