Интеграция JSF / Апплета - PullRequest
       10

Интеграция JSF / Апплета

3 голосов
/ 10 ноября 2011

В нашем текущем прототипе большинство стандартных элементов управления HTML заменены апплетом, наиболее важным является то, что отправка формы запускается апплетом.

Существует ли способ вызвать связанное действие на стороне сервера во многомКак и в случае

<h:commandButton action="#{ctrl.doit}"/>?

В этой статье Интеграция с апплетами и JSF - пример содержит тот же вопрос, но не подходит.Апплет - это замена формы с точки зрения сервера.Он заполняет выделенные (скрытые) поля и отправляет - нет прямой связи с сервером.

РЕДАКТИРОВАТЬ

Пока я понимаю, что есть следующие возможности интеграции:

  • добавьте (скрытый) UICommand и запустите его через JavaScript
  • Реализуйте собственную UICommand.Насколько я понимаю, я бы определил скрытый параметр для маркировки апплета как элемента управления отправкой формы, в цикле обработки запросов реализация UICommand обнаружит и запустит действие.Возможно, следует реализовать виртуальный элемент управления (сравнимый с f: viewParam) в качестве конечной точки для MethodExpressions.
  • Подключите прослушиватель либо к (случайному) элементу управления, либо к более общему прослушивателю событий и выполните здесь свои действия.Как в этом случае осуществляется навигация?

1 Ответ

3 голосов
/ 10 ноября 2011

Это не возможно без физического представления JSF на той же самой странице, на которой встроен апплет.Таким образом, вы должны по крайней мере иметь <h:form> с <h:commandButton> на той же странице, если это необходимо скрыть с помощью CSS display: none;.Это просто потому, что JSF должен иметь состояние просмотра этой формы на стороне сервера, в частности, для предотвращения атак типа CSRF .Если наличие физического <h:form> на странице не является для вас проблемой (что, по-видимому, верно в вашем конкретном случае), то вы можете просто позволить Апплету заполнить поля (если есть) и нажать кнопкукнопка формы, использующая апплет-JavaScript связь.

Кроме этого, простой сервлет или реальный API веб-сервиса, такой как JAX-RS / JAX-WS, действительно лучший способ.JSF - это основанная на компонентах инфраструктура MVC, а не платформа веб-сервиса.Вот что мой ответ в этом связанном вопросе пытается прояснить: используйте правильный инструмент для работы .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...