Обновить компонент JSF / PF из запланированного компонента / таймера [дубликат]

Автор плагина говорит, что вы должны использовать квадратные скобки без кавычек , []

http://bassistance.de/2011/10/ 07 / release-validation-plugin-1-9-0 /

Release: Validation Plugin 1.9.0: «... Еще одно изменение должно сделать установку форм со скрытыми Элементы проще, теперь они игнорируются по умолчанию (опция «ignore» теперь имеет значение «: hidden» по умолчанию). Теоретически это может нарушить существующую настройку. В маловероятном случае, что это действительно так, вы можете исправить это, установив ignore-option to "[]" (квадратные скобки без кавычек).

blockquote>

Чтобы изменить эту настройку для всех форм:

$.validator.setDefaults({ 
    ignore: [],
    // any other default options and/or rules
});

(Это не что .setDefaults() находится внутри функции document.ready)

ИЛИ для одной конкретной формы:

$(document).ready(function() {

    $('#myform').validate({
        ignore: [],
        // any other options and/or rules
    });

});

EDIT:

См. этот ответ о том, как включить проверку некоторых скрытых полей, но все равно игнорировать другие.


EDIT 2:

Перед тем как оставить комментарии, что " это не работает », продолжайте в виду, что OP просто спрашивает о плагине jQuery Validate , и его вопрос не имеет никакого отношения к тому, как ASP.NET, MVC или любая другая инфраструктура Microsoft могут изменить нормальное ожидаемое поведение этого плагина. Если вы используете фреймворк Microsoft, функционирование плагина jQuery Validate по умолчанию перезаписывается плагином Microsoft unobtrusive-validation.

Если вы боретесь с плагином unobtrusive-validation, пожалуйста, обратитесь вместо этого: https://stackoverflow.com/a/11053251/594235

15
задан BalusC 24 March 2016 в 11:11
поделиться

4 ответа

JSF 2.3 +

Для этого вы можете использовать @Push и <f:websocket> . Ниже приведен пример запуска, который обновляет таблицу данных при событии, запущенном бэкэндом.

<h:dataTable id="notifications" value="#{bean.notifications}" var="notification">
    <h:column>#{notification.message}</h:column>
</h:dataTable>

<h:form>
    <f:websocket channel="push">
        <f:ajax event="updateNotifications" render=":notifications" />
    </f:websocket>
</h:form>

@Named @ApplicationScoped
public class Bean {

    private List<Notification> notifications;

    @Inject
    private NotificationService service;

    @Inject @Push
    private PushContext push;

    @PostConstruct
    public void load() {
        notifications = service.list();
    }

    public void onNewNotification(@Observes Notification newNotification) {
        notifications.add(0, newNotification);
        push.send("updateNotifications");
    }

    public List<Notification> getNotifications() {
        return notifications;
    }

}

@Stateless
public class NotificationService {

    @Inject
    private EntityManager entityManager;

    @Inject
    private BeanManager beanManager;

    public void create(String message) {
        Notification newNotification = new Notification();
        newNotification.setMessage(message);
        entityManager.persist(newNotification);
        beanManager.fireEvent(newNotification);
    }

    public List<Notification> list() {
        return entityManager
            .createNamedQuery("Notification.list", Notification.class)
            .getResultList();
    }

}

JSF 2.2 -

Если вы еще не находитесь в JSF 2.3, вам нужно перейти в сторонние библиотеки JSF.

Отмечено, что <o:socket> является основой для JSF 2.3 <f:websocket> ]. Итак, если вы нашли много общего, то это правильно.

PrimeFaces использует Атмосфера под капюшонами (что неудобно для настройки без Maven). Атмосфера поддерживает websockets с возвратом SSE и длительным опросом. ICEfaces основан на древней методике длинного опроса . Все они не реализуют собственный API-интерфейс JSR356 WebSocket, который был позже представлен в Java EE 7.

OmniFaces использует собственный API-интерфейс JSR356 WebSocket (поддерживается на всех серверах Java EE 7 и Tomcat 7.0.27+). Поэтому он также очень прост в настройке и использовании (один JAR, один параметр контекста, один тег и одна аннотация). Для этого требуется только CDI (не сложно установить на Tomcat ), но он позволяет вам даже нажать от артефакта не-JSF (например, @WebServlet). В целях безопасности и безопасности JSF, он поддерживает только односторонний push (от сервера к клиенту), а не наоборот. Для этого вы можете использовать JSF ajax обычным способом. JSF 2.3 <f:websocket> в значительной степени основан на OmniFaces <o:socket>, поэтому вы найдете много сходства в своих API-интерфейсах ( JSF - OmniFaces ).

Кроме того, вы можете использовать опрос вместо нажатия. Практически каждая библиотека компонентов JSF, поддерживающая ajax, имеет компонент <xxx:poll>, такой как PrimeFaces с <p:poll> . Это позволяет отправлять exery X секунд запрос ajax на сервер и обновлять контент, когда это необходимо.

См. Также:

19
ответ дан BalusC 15 August 2018 в 15:13
поделиться
  • 1
    В stackoverflow, когда мы редактируем вопрос, а между тем, если кто-то еще редактирует вопрос, мы получаем сообщение на нашей странице редактирования. Это реализовано с помощью опроса или на стороне сервера? – Rohit Banga 24 September 2010 в 20:20
  • 2
    Использование опроса. Проверьте источник и установите Firebug для отслеживания запросов XHR (Ajax). – BalusC 24 September 2010 в 20:31

Вы можете посмотреть Seam (см. в этой статье для обсуждения использования Seam с JSF и AJAX).

Когда я использовал Судя по всему, в последний раз это было довольно медленно. Возможно, вы захотите создать свой собственный компонент JSF, который генерирует JavaScript (например, используя jQuery, как описано в в этой статье ).

-1
ответ дан Aaron Digulla 15 August 2018 в 15:13
поделиться

Простейшим для вас может быть введение компонента «poll» библиотеки ajax4jsf: https://ajax4jsf.dev.java.net/nonav/documentation/ajax-documentation/entire.html#d0e1955

Это не потребует реконфигурации приложения и больших изменений на странице JSF (добавление компонента a4j: poll добавлено)

Он работал очень хорошо в нескольких моих проектах.

0
ответ дан Andriy Sholokh 15 August 2018 в 15:13
поделиться

Если вам нужны полнофункциональные обновления Comet (обратная Ajax) и т. д., то стоит посмотреть на библиотеку DWR .

0
ответ дан Scott Wilson 15 August 2018 в 15:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: