[ kandelabr @ 18.02.2010. 13:52 ] @
E ovako, zeleo bih da klikom na neko dugme ispod njega iscrta h:inputText, pomocu js/ajax.
Prvo sam probao nesto ovako:
Code:

<script type="text/javascript">
                function getContent(){
                    
                    var zip=document.getElementById("zip").id.toString();
                    new Ajax.Request("zip.ajax",
                        {      method: "get",
                           parameters: "zip=" + zip,
                           onComplete: stateChange
                        });
                }
                
function stateChange(asyncRequest){ //rezultat je vracen prema json notaciji
                     document.getElementById("output").innerHTML=asyncRequest.responseText;
                }
</script>

        </head>
        <body>
            <div class="center">
                <h:commandButton id="zip" type="button" value="zip" onclick="getContent()"  />

            </div>
            <br/>
            <div id="output" class="watch"></div> <br/>


dok servlet AjaxServlet izgleda ovako

Code:

protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        response.setHeader("Cache-Control", "no-cache");
        response.setStatus(HttpServletResponse.SC_OK);
        PrintWriter out = response.getWriter();
        System.out.println("AjaxServlet");
        try {
            String zip="<h:inputText value='dsadsa'/>";
            out.write(zip);
        } finally {
            out.close();
        }
    } 

i nece da ispise nista, e sad ako bi se ovaj string zip zamenio sa onim uobicajnim <input type = "text.... onda izbaci to input polje.

Onda sam probao na drgi nacim koristeci onaj Ajax4JSF:
Code:

<h:form>
            <div class='center'>
                <a4j:commandButton action="#{Dodavac.dodaj}"
                                   value = "radi"
                                   reRender = "output"/>
            </div>
            </h:form>
                <br>

               <h:outputLabel value="#{Dodavac.kod}" id="output" />

, gde je ovaj Dodavac neki mali bean koji samo ima jedan string kod i sa metodom dodaj: kod = "<h:inputText value='dsadsa'/>"
E ni to i ne radi, nego mi ispise samo <h:inputText value='dsadsa'/>, znaci samo kao text, a ne kao formu. Probao sam i sa drugim h: i f: tagovima i nista.
Ako neko ima ideju kako da mi se pomocu ajaxa na ove ili neki drugi nacin ispisuju jsf forme, bio bih mu jako zahvalan.
[ Scelle @ 05.03.2010. 18:08 ] @
Nisam neki Ajax guru, ali za ovo postoji prilicno jednostavno resenje (cini mi se): koristi "rendered" svojstvo. Prosledjujes mu "true" ili "false" (moze i iz nekog objekta, sto sigurno znas) i na taj nacin govoris serveru da li da ga prikaze. Sad, nisam siguran da li ga kontrola "outputText" ima, ali mozes sigurno da je uvijes u jedan "subview" i onda da kontrolises da li ce se on prikazivati ili ne. Nadam se da nisam bio skroz nerazumljiv... :)
[ dejanet @ 05.03.2010. 20:10 ] @
Mislim ako ti je u servletu response.setContentType("text/html;charset=UTF-8");

ne mozes drugo ocekivati drugo sem text-a ili

ako ubacis string sa servleta u neki html FORM mozes da bacis html edit-e,button-e,checkboxove itd..

Nikad nisam probao jsf tagove preko ajax varijante, probaj prvo da dobijes html form elemente, pa onda predji na tagove, ako je moguce..