JSF: Использование Ajax Push с ледяными пальцами (IcePush)
Вопрос
Я использую ледяные пальцы с ледяной печностью, чтобы нажать на некоторые данные в браузер.
Тем не менее, он не работает как планируемый: он не работает Ajax, он просто вызывает действие и возвращает от действия, подобное любому другому неайаксу.
Я использую новейшие ледяные пальцы и версии ледяных и ледяных версий и Tomahawk 7 и JSF 2.
Работает с ни сервлетом 2.5, ни сервлетом 3.0.
Это важные части моей фасоли (вид на колебания):
public AjaxTest() {
PushRenderer.addCurrentSession(PUSH_GROUP);
}
public void addText() throws InterruptedException {
for(int i = 0; i < 5; i++) {
lines.add("line " + i);
PushRenderer.render(PUSH_GROUP);
Thread.sleep(1000);
}
}
.
И это фрагмент моей формы:
<h:panelGroup>
<h:dataTable id="ajaxTestTable" value="#{ajaxTest.lines}" var="line">
<h:column>
<h:outputText value="#{line}" />
</h:column>
</h:dataTable>
<h:commandButton id="startAjax" value="Start"
action="#{ajaxTest.addText}" />
</h:panelGroup>
.
Я что-то пропустил?Спасибо!
Решение
Icefaces 2.0 еще не интегрирован с Myfaces.Вы пробовали приложение с включенными файлами Mojarra.
Другие советы
Я знаком только с ледяными помехами 1.8, но мне кажется, что вам команда, не включена Ajax.Также вы должны использовать ActionListener вместо действия
Вы можете использовать кнопку команды Icefaces:
<ice:commandButton id="startAjax" value="Start"
actionListener="#{ajaxTest.addText}"/>
.
или jsf 2 ajax Теги:
<h:commandButton id="startAjax" value="Start">
<f:ajax listener="#{ajaxTest.addText}"/>
</h:commandButton>
. У вас есть какой-то инструмент разработки, который может подтвердить код?По крайней мере, на Vaadin версию льда, которую вы не могли доверять своими примерам.На их официальной демонстрационной демонстрации был устаревший код и в их чате, они дали код, где импорт был с другой планеты с правильными.
Мое затмение сказала, что многие импорта были неправы, и код устарел отметки на некоторые функции.Эти парни там так быстро развиваются, что их документы постоянно устарели.Итак, внимательно прочитайте, какой ваш инструмент говорит о коде!
У меня также есть проблема с интеграцией ледовых помещений (для использования push) с приложением, которое уже использует Richfaces. Но можно интегрировать ледяную печушку непосредственно с практически любым java-веб-приложением (с API сервлета). Вы можете увидеть более подробную информацию о http:// Achorniy. WordPress.com/2012/02/29/icepush-integration-to-web-aplication/
Идея состоит в том, чтобы использовать JavaScript-API (или jQuery-API), предоставляемый IcePush. Итак, ваша страница с JavaScript-API зарегистрируйтесь в качестве слушателя, чтобы нажать уведомления и в обратном вызове, вы можете вызвать любые функции JavaScript для обновления вашей страницы. В примере Richfaces вы можете использовать ajaxupdatefunction (), который фактически поддерживается <a4j:jsFunction name="ajaxUpdateFunction" action="#{myBean.update} reRender="updatedComponent(s)" ajaxSingle="true"/>
или выполнять AJAX-запрос с jQuery. В вашем случае (JSF-2.0) я думаю, что вы можете позвонить в jsf.ajax.request(this, event, {render:'ajaxTestTable'})
для обновления того, что вы хотите (примеры
Все, что вам нужно сделать на стороне сервера - это зарегистрировать сервлете IcePush и инициализируйте соединение на льду на стороне клиента с JavaScript API.