2015-08-20 90 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