a4j:JSfunction a4j:coomandButton different different behavio
xilosh Oct 28, 2009 5:42 AMHi all,
The richfaces documentation says that in documentation says that it's possible to use <a4j:jsFunction> instead of <a4j:commandButton>, but it is not working for me.
I'm invoking an actionListener using a4j:commandButton, the action do a search and prints the number of results, works fine. Currently I want to use a4j:JSfunction to invoke the same action, the action is invoked and the search is done properly, however results display 0 elements found, I'm debbuging at server and results are found. The action invoked is the same in both cases,
Here is my code
jsp page
<?xml version="1.0" encoding="iso-8859-1" ?> <jsp:root version="1.2" xmlns:jsp="http://java.sun.com/JSP/Page" xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html" xmlns:c="http://java.sun.com/jsp/jstl/core" xmlns:rich="http://richfaces.org/rich" xmlns:a4j="http://richfaces.org/a4j"> <jsp:directive.page contentType="text/html;charset=iso-8859-1" pageEncoding="iso-8859-1" /> <f:view> <html lang="es"> <body> <a4j:form id="formulario"> <script> function search(){ updateGraph(); } </script> <h:inputText id="content" binding="#{interfaceContainer.documentFormContainer.inputTexts['content']}"/> <a4j:jsFunction name="updateGraph" actionListener="#{interfaceContainer.documentFormActions.search}" > </a4j:jsFunction> <a4j:commandButton type="submit" tabindex="80" title="buscar" value="Buscara4j" id="Submit" actionListener="#{interfaceContainer.documentFormActions.search}" /> <h:commandButton tabindex="80" title="update" id="updateGrgg" value="graph" onclick="javascript:search();" /> <a4j:outputPanel> <h:outputText id="info2" value="Empty #{not empty searchResults} number #{searchResults.numFound } " /> </a4j:outputPanel> </a4j:form> </body> </html> </f:view> </jsp:root>
The beans scope of the beans is request, and the action is
public void search(ActionEvent e) { FacesContext context = FacesContext.getCurrentInstance(); SearchResults searchResults = (SearchResults) context.getELContext() .getELResolver().getValue(context.getELContext(), null, "searchResults"); QResponse qresponse = solrConnector.executeSearch(); processSearch(qresponse, searchResults); context.getELContext() .getELResolver().setValue(context.getELContext(), null, "searchResults",searchResults); }