Проблема с отправкой формы в JSF+PrimeFaces после использования widgetvar

Я использую widgetVar, чтобы включить командную кнопку через javascript для некоторого события. Однако после включения командной кнопки, когда я нажимаю кнопку, форма не отправляется, и действие не вызывается на стороне сервера.

Та же настройка работает нормально, если я не использую widgetVar и держу кнопку включенной по умолчанию. Он отправляет функцию, вызывает действия и отображает результат.

К вашему сведению, я использую вызов ajax.

<p:commandButton id = "btnSearch" value = "Search" disabled = "true"
    widgetVar = "searchButton"
    ajax = "true"
    action = "#{someBean.someFunction(someBean.firstName, someBean.lastName)}">
    <p:ajax
        execute = "firstName lastName"
        render = "tabViewId:resultsDataTableId"
        onsuccess = "showSearchResults()"/>
</p:commandButton>

Javascript -

function onSomeEvent(){
    PF('searchButton').enable();
}

Пожалуйста посоветуй.

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
37
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Если бы вы отлаживали вкладку сети в браузере, есть вероятность, что вы увидите сетевой трафик, когда кнопка включена таким образом (с другой стороны, вы могли бы и нет, но вы должны были проверить это). Таким образом, это будет означать, что отправка на сервер действительно происходит, она просто не обрабатывается. Почему это так?

Это задумано и является встроенной в JSF функцией для предотвращения несанкционированного доступа к формам/данным/... Другим современным (читай разрекламированным) клиентским фреймворкам javascript потребуется дополнительная защита OWASP для достижения того же уровня безопасности. который есть у JSF. Поэтому, если вы хотите включить кнопку со стороны клиента, вам следует выполнить ajax-вызов, чтобы обновить состояние кнопки (и проверить, разрешено ли это делать клиенту). Или вы можете включить его по умолчанию, а с помощью некоторого javascript сначала отключить его. Лично я бы выбрал первое.

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