2015-08-20 136 views
0

我需要對h:selectonemenu進行一些保存操作。當它改變值時,它應該保存這個值,但不刷新頁面(所以不需要提交)。我不得不使用jsf 1.2。經過一番研究,我發現它可以用a4j:支持完成,但是我不知道如何將它包含到我的項目中。我是否需要下載一些舊的richfaces庫? (因爲我知道richfaces 4不支持jsp語法)。或者確實存在一些其他方式來實現這一目標?使用a4j:支持jsf 1.2

回答

1

1.您可以使用Richfaces 3.3.4.Final(downaload here)。

This是你應該在項目中包含,註冊和使用庫的方式。注意:

與RichFaces的JSF應用程序假定以下JAR項目可供選擇:公地的BeanUtils-1.7.0.jar,commons-collections提供-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.舉例:

你可以使用自定義的servlet使用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庫添加到我的項目中,但沒有成功。它在啓動期間拋出一個錯誤':由java.lang.ClassNotFoundException:org.richfaces.webapp.taglib.UIComponentELTagBase from'引發。但是這個類存在於我在richfaces庫中的戰爭中。我做錯了什麼? –

+0

哦,我在JBoss上運行它 –

+0

你直接或通過maven聲明放置libs嗎? (所有這些:richfaces-api-3.3.4.Final + richfaces-impl-3.3.4.Final + richfaces-ui-3.3.4.Final) – Paszek