在 jsf 1.2 中使用 a4j:support

Using a4j:support with jsf 1.2

我需要在 h:selectonemenu 上进行一些保存操作。当它的值改变时,它应该保存这个值,但没有页面刷新(所以没有提交)。

不幸的是,我必须使用 jsf 1.2。经过一些研究,我发现它可以用 a4j:support 完成,但是我不知道如何将它包含到我的项目中。我需要下载一些旧的 richfaces 库吗? (据我所知,richfaces 4 不支持 jsp 语法)。或者是否存在其他实现此目标的方法??

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

This 是您应该在项目中包含、注册和使用库的方式。注意:

A JSF application with RichFaces assumes that the following JARs are available in the project: commons-beanutils-1.7.0.jar, commons-collections-3.2.jar, commons-digester-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() 与自定义 servlet 结合使用。

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
}