Onde acho um ajax4jsf que funcione

6 respostas
luistiagos

então estou tentando instalar na minha app o ajax4jsf porem não funciona de jeito algum…

quando tento utilizar isto:

<h:inputText value="#{pessoa.nome}">
        <a4j:support event="onkeyup" reRender="texto"/>
</h:inputText>
<h:outputText id="texto" value="#{pessoa.nome}"/>

ele o seguinte erro:

javax.faces.view.facelets.TagException: /view/planoTrabalho/programaProjeto/formProgramaProjeto.xhtml @22,18 <a4j:support> Tag Library supports namespace: https://ajax4jsf.dev.java.net/ajax, but no tag was defined for name: support
	at com.sun.faces.facelets.compiler.CompilationManager.pushTag(CompilationManager.java:304)
	at com.sun.faces.facelets.compiler.SAXCompiler$CompilationHandler.startElement(SAXCompiler.java:255)
	at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(AbstractSAXParser.java:506)
	at com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.startElement(XMLDTDValidator.java:745)
	at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:376)
	at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2715)
	at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:607)
	at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:116)
	at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:488)
	at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:835)
	at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:764)
	at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:123)
	at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1210)
	at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:568)
	at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl.parse(SAXParserImpl.java:302)
	at javax.xml.parsers.SAXParser.parse(SAXParser.java:195)

em meu classpath tenho os jars que dependem para o funcionamento do ajax4jsf:

  • ajax4jsf-1.0.6
  • commons-beanutils-1.8.3
  • commons-collections-3.2.1
  • commons-digester-2.0
  • commons-logging-1.1.1
  • oscache-2.4

meu web.xml esta assim:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
	id="WebApp_ID" version="3.0">
	<display-name>CPBWeb</display-name>
	<welcome-file-list>
		<welcome-file>view/paginaInicial.jsf</welcome-file>
	</welcome-file-list>
	<servlet>
		<servlet-name>Faces Servlet</servlet-name>
		<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
		<load-on-startup>1</load-on-startup>
	</servlet>
	<servlet-mapping>
		<servlet-name>Faces Servlet</servlet-name>
		<url-pattern>*.jsf</url-pattern>
	</servlet-mapping>
	<context-param>
		<param-name>primefaces.THEME</param-name>
		<param-value>aristo</param-value>
	</context-param>
	<filter> 
		<display-name>Ajax4jsf Filter</display-name>
			<filter-name>ajax4jsf</filter-name>
			<filter-class>org.ajax4jsf.Filter</filter-class> 
	</filter>
	<filter-mapping>
		<filter-name>ajax4jsf</filter-name>
		<servlet-name>Faces Servlet</servlet-name>
	    <dispatcher>REQUEST</dispatcher>
		<dispatcher>FORWARD</dispatcher>
		<dispatcher>INCLUDE</dispatcher>
	</filter-mapping>
</web-app>

na pagina eu importo a tag:

xmlns:a4j="https://ajax4jsf.dev.java.net/ajax"

Alguém sabe o que pode estar acontecendo?

6 Respostas

E

usa o richfaces no lugar de somente o ajax4jsf. O richfaces já tem a lib do ajax4jsf dentro e vc consegue usar normalmente as tags, além de ter um livedemo.

fbl.lucas

Concordo, tentei pesquisar aqui sobre o ajax4jsf, mas depois que ele foi incorporado ao richfaces ficou bem complicado de achar algo.

luistiagos

tbm tentei e não obtive sucesso… com o rich o servidor nem sobe…
estou usando junto o primefaces…

ele da esse erro:

java.lang.IllegalArgumentException: argument type mismatch
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:601)
	at org.apache.commons.beanutils.MethodUtils.invokeMethod(MethodUtils.java:282)
	at org.apache.commons.digester.SetNextRule.end(SetNextRule.java:217)
	at org.apache.commons.digester.Rule.end(Rule.java:253)
	at org.apache.commons.digester.Digester.endElement(Digester.java:1332)
	at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(AbstractSAXParser.java:606)
	at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement(XMLDocumentFragmentScannerImpl.java:1741)
	at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2898)
	at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:607)
	at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:488)
	at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:835)
	at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:764)
	at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:123)
	at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1210)
	at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:568)
	at org.apache.commons.digester.Digester.parse(Digester.java:1887)
	at org.ajax4jsf.framework.resource.ResourceBuilderImpl.registerConfig(ResourceBuilderImpl.java:155)
	at org.ajax4jsf.framework.resource.ResourceBuilderImpl.registerResources(ResourceBuilderImpl.java:209)
	at org.ajax4jsf.framework.resource.ResourceBuilderImpl.<init>(ResourceBuilderImpl.java:113)
	at org.ajax4jsf.framework.resource.InternetResourceBuilder.getInstance(InternetResourceBuilder.java:148)
	at org.ajax4jsf.framework.resource.ClientScript.<init>(ClientScript.java:45)
	at org.ajax4jsf.framework.ajax.AjaxScript.<init>(AjaxScript.java:31)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:525)
	at java.lang.Class.newInstance0(Class.java:372)
	at java.lang.Class.newInstance(Class.java:325)
E

Tentei uma vez usar o Richfaces com o Trinidad, mas os filtros deles brigavam (o filtro do Ajax4Jsf e do Trinidad), provavelmente ocorre a mesma coisa com o Richfaces+Primefaces. Agora, por conta dos recursos, estou usando só o Primefaces.

No Primefaces, no lugar da tag a4j:support, você tem a p:ajax.

luistiagos

evefuji:
Tentei uma vez usar o Richfaces com o Trinidad, mas os filtros deles brigavam (o filtro do Ajax4Jsf e do Trinidad), provavelmente ocorre a mesma coisa com o Richfaces+Primefaces. Agora, por conta dos recursos, estou usando só o Primefaces.

No Primefaces, no lugar da tag a4j:support, você tem a p:ajax.

opa é exatamente disto q necessito… como funciona este p:ajax? tem algum exemplo dele?

E

no seu caso vai ficar provavelmente assim:

<p:inputText value="#{pessoa.nome}"> <p:ajax event="keyup" update="texto" process="@this"/> </p:inputText> <h:outputText id="texto" value="#{pessoa.nome}"/>

Dá uma olhada aqui

Obs: se me lembro bem, o p:ajax só funciona com componentes Primefaces, para os componentes JSF2 tem o próprio f:ajax que se usa da mesma maneira.

Criado 23 de dezembro de 2011
Ultima resposta 23 de dez. de 2011
Respostas 6
Participantes 3