powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / JSF 2; AJAX; dialog
5 сообщений из 5, страница 1 из 1
JSF 2; AJAX; dialog
    #37627046
Soneg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте. Подскажите, пожалуйста.
Есть страница в ней текстовое поле "Фамилия" и есть кнопочка открывающая диалог.
Нажимаем кнопочку, открывается диалог, в нём поле ввода "Город" и кнопка "Готово".
Код: html
1.
2.
3.
4.
5.
6.
<h:outputLabel for="city" value="Город"/>
<h:inputText id="city" value="#{adress.city}">
  <f:ajax event="blur" render="cityMsg" />
</h:inputText>
<h:message for="city" id="cityMsg" />
<h:commandButton value="Готово" type="button" id="b1" />


Пожалуйста, объясните, как по нажатию на кнопку выполнить скрипт JavaScript, в случае, если поле валидно (если не валидно не выполнять).
...
Рейтинг: 0 / 0
JSF 2; AJAX; dialog
    #37627123
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не совсем понятна задача. Непонятно, вам нужна серверная валидация или клиентская? Опишу несколько типовых решений.

Пусть вам нужна серверная валидация, вариант
1) Ввести некий флаг и у кнопки выставить rendered="#{flag}", прикаждой валидации устанавливать этот флаг. Таким образом у вас кнопка будет рисоваться только в случае если валидация успешна(не забудьте добавить render кнопки по валидации). Опять же надо помнить, что теоретически запрос может быть подделан, нужно от этого защищаться или нет, зависит от ваших требований. Если кнопка все же нужна всегда, то можно провернуть такой же трюк с атрибутом disabled
2) Есть куча извращений, как сделать это чистым жаваскриптом, EL-выражениями и тп.
3) Можно использовать компонент-биндинг

В общем, детализируйте плиз задачу, нужно ли вообще показывать эту кнопку, нужна ли защита на сервере, какой именно скрипт вы хотите выполнить и зачем?
...
Рейтинг: 0 / 0
JSF 2; AJAX; dialog
    #37627262
Soneg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Большое спасибо, что откликнулись. Мне нужна серверная валидация. Срипт - закрыть диалоговое окно.
Пытаюсь написать CRUD приложение ввода личной карточки (ФИО, паспорт(а), образование(ия), родственники и т.п.). На странице поля ввода данных и кнопочки для открывания диалоговых окон с полями ввода других данных (эти другие данные повторяются, например "город": "адрес по прописке", "адрес фактического проживания" и т.п.).
Хотелось бы что бы кнопка присутствовала всё время. Валидация по потере фокуса не обязательна, можно проводить валидацию по нажатию на кнопку и, в случае успешной валидации, на сервере происходит "деятельность" и диалоговое окно закрывается.
Не могу понять как закрыть диалоговое окно. И я пытаюсь избежать фреймворков (*faces, но почти созрел для использования prime faces). И должно работать под ие, а под остальным не обязательно, потому могу себе позволить showModalDialog.
Искал и находил только ответы с рендерингом сообщений об ошибке.
Находил описание jsf.ajax , но всё равно не могу сообразить как же закрыть диалог.
я очень неопытный программист, буду рад если направите на хороший источник информации, найти его самостоятельно мне не удалось. возможно, я ошибся, выбрав JSF (2)? пишут, что он хорош для CRUD приложений. или я ошибся в "дизайне" (пытаясь решить ввод повторяющийся и иногда необязательной информации через далоговые окна)? Очень нужен совет опытного программиста
...
Рейтинг: 0 / 0
JSF 2; AJAX; dialog
    #37627374
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В вашем случае все довольно просто,
автор<h:outputLabel for="city" value="Город"/>
<h:inputText id="city" value="#{adress.city}">
<f:ajax event="blur" render="cityMsg" />
</h:inputText>
<h:message for="city" id="cityMsg" />
<h:commandButton value="Готово" type="button" id="b1" >
<f:ajax event="click" render="@form" onevent="checkStatus"/>
</h:commandButton>

<script type="text/javascript">

function checkStatus(data) {
var ajaxStatus = data.status; // Can be "begin", "success" and "complete"
switch (ajaxStatus) {

case "success": // This is called when ajax response is successfully processed.
//Your script goes here
break;
}
}
</script>


По сути я только добавил ajax поведение для кнопки, во время обработки ajax запроса несколько раз отрабатывается onEvent, вам надо выловить момент успешного окончания запроса, для этого проверяем data.status, если оно "success", то ваш скрипт выполнится и закроет диалоговое окно, если произошла ошибка - то ваш скрипт никогда не выполнится, и окно не закроется, а просто перерисуется, но ведь именно это вам и надо.
Другое дело, что ваш запрос будет посылаться всегда, независимо от того валидна форма или нет, и вот для решения этой проблемы, существует куча способов, которые я упомянул раньше, но если вам эта проблема непринципиальна, то решения с onEvent вполне достаточно.

авторИ я пытаюсь избежать фреймворков (*faces, но почти созрел для использования prime faces). И должно работать под ие, а под остальным не обязательно, потому могу себе позволить showModalDialog.

А вт это вы зря, фреймворки иногда очень полезны, во многих из них кстати уже реализовано то что вам нужно, например в Richfaces можно прямо в a4j:ajax указать функцию oncomplete и т.д. Правда есть одна тонкость - фреймворков много, часто для одних целей подходит один, для других - другой, но я вам крайне советую выбрать один фреймворк, потому что между собой они дружат плохо и могут вспылвать странные баги. Я конечно могу быть необъективным, так как сам был разработчиком richfaces, но мой совет такой - если вам нужны красивые компоненты, и нет никаких особых требований, которые не вписываются в обычное использование компонента - то берите primefaces, если нужна более мощная поддержка ajax или специфические сценарии использования компонентов - то берите richfaces, если не хотите заботиться о том, какие области перерисовывать псоле каждого ajax запроса - iceFaces, с остальными работал мало.

авторвыбрав JSF (2)? пишут, что он хорош для CRUD приложений. или я ошибся в "дизайне" (пытаясь решить ввод повторяющийся и иногда необязательной информации через далоговые окна)?

Ну в принципе, немного лукавят, хотя в основном это правда. JSF - очень хорош, когда ты понимаешь как он внутри работает, а чтобы в нем разобраться, надо прочесть довольно много статей, книг и т.п. Но если ты в нем разобрался - то разрабатывать можно действительно очень быстро и удобно, я имею ввиду, что jsf только с виду прост, малейшее отклонение от идеологии - и вы можете столкнуться с неожиданностями(вроде вашей), и только хорошо зная внутренне устройство, можно умело обходить всяческие косяки. Многие советуют использовать вместо jsf gwt, но у меня в этом опыта мало, прочитайте пару вводных статей, может оно вам покажется роднее.
...
Рейтинг: 0 / 0
JSF 2; AJAX; dialog
    #37627428
Soneg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо.
А нет описания JavaScrit объекта data(в вашем примере скрипта)? Всё что я про него нашёл - это ссылка jsf.ajax чуть выше. Из него нельзя получить информацию валидна форма или-нет?
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / JSF 2; AJAX; dialog
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]