Netbeans 5.5 + ajax4jsf + Visual Web Pack (tudo funcionando)

3 respostas
gtcabral

Pessoal, depois de muita briga (hehe) consegui fazer o netbeans funcionar com o ajax4jsf.

Busquei várias soluções na net, cheguei até a descompactar a lib do ajax4jsf para retirar o faces-config.xml, como algumas pessoas indicaram.

O que deu certo pra mim foi:

Importe os seguintes jar’s:
—ajax4jsf-1.1.0.jar
—oscache-2.3.2.jar
—commons-beanutils.jar
—commons-collections-3.2.jar
—commons-digester-1.8.jar
Com os jar’s commons o Visual Web Pack vai parar de dar erro quando vc começar a usar o a4j.

Vc terá de adicionar o seguinte código no seu web.xml:

<filter>
            <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>

Componentes
No teste que fiz, não deu certo usar os componentes da aba Básico, ui:textField, tive que usar os componentes da aba Padrão, <h:inputText>.

Exemplo bem simples:

<?xml version="1.0" encoding="UTF-8"?>
<jsp:root version="1.2" xmlns:a4j="https://ajax4jsf.dev.java.net/ajax" xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html"
    xmlns:jsp="http://java.sun.com/JSP/Page" xmlns:ui="http://www.sun.com/web/ui">
    <jsp:directive.page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"/>
    <f:view>
        <ui:page binding="#{Page1.page1}" id="page1">
            <ui:html binding="#{Page1.html1}" id="html1">
                <ui:head binding="#{Page1.head1}" id="head1">
                    <ui:link binding="#{Page1.link1}" id="link1" url="/resources/stylesheet.css"/>
                </ui:head>
                <ui:body binding="#{Page1.body1}" id="body1" style="-rave-layout: grid">
                    <ui:form binding="#{Page1.form1}" id="form1">
                        <h:inputText binding="#{Page1.textField1}" id="textField1" style="left: 420px; top: 48px; position: absolute" value="#{Page1.texto}">
                            <a4j:support event="onkeyup" reRender="outputText1"/>
                        </h:inputText>
                        <h:outputText binding="#{Page1.outputText1}" id="outputText1" style="position: absolute; left: 468px; top: 96px" value="#{Page1.texto}"/>
                    </ui:form>
                </ui:body>
            </ui:html>
        </ui:page>
    </f:view>
</jsp:root>

No Page1.java vc tem que inserir:

private String texto;
  public String getTexto() {
        return texto;
    }

    public void setTexto(String texto) {
        this.texto = texto;
    }

Outra coisa: para que o netbeans comece a auto-completar as tags a4j, vc terá que fechar e depois abrir o netbeans. Tentei compilar, executar, limpar e construir o projeto, mas só deu certo depois que fechei e abri o netbeans, hehe, vai entender.

Bom é isso ai.
Se alguém tiver alguma dúvida e eu puder ajudar, é só postar ai.
Abraços.
Obs.: as bibliotecas commons vc pode encontrar em: http://jakarta.apache.org/commons/components.html

3 Respostas

gustavodelgado

Cara… vc não faz idéia de como eu tentei resolver isso, heheh.
Eu estava trabalhando até hoje, com o ajax4jsf.jar alterado (sem o faces-config).
Mas sua solução é melhor… apesar de não ser o ideal… imagino que isso seja um bug do Visual Web Pack mesmo.

Fiz seu exemplo aqui, utilizando o ui:textField e funcionou sem problemas. A diferença é que o evento “onKeyUp” dele é assim, com K e U maiúsculos, diferente do <h:inputText>

Meu código ficou assim:

<?xml version="1.0" encoding="UTF-8"?>
<jsp:root version="1.2" xmlns:a4j="https://ajax4jsf.dev.java.net/ajax" xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html" xmlns:jsp="http://java.sun.com/JSP/Page" xmlns:ui="http://www.sun.com/web/ui">
    <jsp:directive.page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"/>
    <f:view>
        <ui:page binding="#{Page1.page1}" id="page1">
            <ui:html binding="#{Page1.html1}" id="html1">
                <ui:head binding="#{Page1.head1}" id="head1">
                    <ui:link binding="#{Page1.link1}" id="link1" url="/resources/stylesheet.css"/>
                </ui:head>
                <ui:body binding="#{Page1.body1}" id="body1" style="-rave-layout: grid">
                    <ui:form binding="#{Page1.form1}" id="form1">
                        <ui:textField binding="#{Page1.textField1}" id="textField1" style="left: 96px; top: 144px; position: absolute" text="#{Page1.texto}">
                            <a4j:support event="onKeyUp" reRender="staticText1"/>
                        </ui:textField>
                        <ui:staticText binding="#{Page1.staticText1}" id="staticText1" style="position: absolute; left: 264px; top: 240px" text="#{Page1.texto}"/>
                    </ui:form>
                </ui:body>
            </ui:html>
        </ui:page>
    </f:view>
</jsp:root>
gtcabral

Valeu pela dica do evento onKeyUp Gustavo. Vou testar.
Agora estou usando rich faces.
Muito bom também.
Abraços.

gustavodelgado

Olá Cabral…

Reabrindo a discussão, agora tentei utilizar o Rich Faces também e tive o mesmo problema que tinhamos com o ajax4jsf. O editor visual do NetBeans dá pau quando adiciono os jars. Mesmo tendo adicionado os jars do commons, como vc recomendou.

Vc conseguiu fazer funcionar?

Abraços,

Gustavo.

Criado 12 de maio de 2007
Ultima resposta 17 de set. de 2007
Respostas 3
Participantes 2