2015-08-20 7 views
0

Мне нужно сделать некоторые действия по сохранению на h: selectonemenu. Когда он изменяет значение, он должен сохранить это значение, но без обновления страницы (поэтому без отправки).Использование a4j: поддержка с jsf 1.2

К несчастью, я должен работать с jsf 1.2. После некоторых исследований я обнаружил, что это можно сделать с поддержкой a4j: но я не знаю, как включить его в свой проект. Нужно ли загружать старые библиотеки библиотек? (поскольку я знаю, что richfaces 4 не поддерживает синтаксис jsp). Или существует какой-то другой способ достижения этой цели?

ответ

1

1. Вы можете использовать Richfaces 3.3.4.Final (downaload here).

This - это способ включить, зарегистрировать и использовать библиотеки в проекте. Примечание:

JSF приложение с RichFaces предполагает, что следующие JAR-файлы доступны в проекте: Викисклад BeanUtils-1.7.0.jar, Викисклад коллекция-3.2.jar, Обще-варочный-1.8.jar, commons-logging-1.0.4.jar, jhighlight-1.0.jar.

Пример (из developer guide) для Вашего случая:

<h:form id="planetsForm"> 
<h:outputLabel value="Select the planet:" for="planets" /> 
<h:selectOneMenu id="planets" value="#{planetsMoons.currentPlanet}" valueChangeListener="#{planetsMoons.planetChanged}"> 
    <f:selectItems value="#{planetsMoons.planetsList}" /> 
    <a4j:support event="onchange" reRender="moons" /> 
</h:selectOneMenu> 
<h:dataTable id="moons" value="#{planetsMoons.moonsList}" var="item"> 
    <h:column> 
     <h:outputText value="#{item}"/> 
    </h:column> 
</h:dataTable> 

2. Пример другого решения:

Вы можете использовать jQuery.ajax() с пользовательским сервлетом ,

JS:

$.ajax({ 
     type: 'GET', 
     url: '/app/customservlet.jsf?value=' + selectOneValue; //selected value 
}); 

Servlet:

@Override 
protected void doGet(HttpServletRequest req, HttpServletResponse res) {  
    String selectOneValue = req.getParameter("value");  
    //do something 
} 
+0

извините за поздний ответ. У меня есть вопрос относительно первого решения. Я пытался добавить библиотеку richfaces в свой проект, но безуспешно. Он выдает ошибку во время запуска 'Caused by: java.lang.ClassNotFoundException: org.richfaces.webapp.taglib.UIComponentELTagBase from'. Но этот класс существует в моей войне в библиотеке богачей. Что я делаю неправильно? –

+0

ой, и я запускаю его на JBoss –

+0

Вы поместили libs напрямую или через maven объявление? (все из них: richfaces-api-3.3.4.Final + richfaces-impl-3.3.4.Final + richfaces-ui-3.3.4.Final) – Paszek