JSF 2.0 + Ajax hello world example
In JSF 2.0, coding Ajax is just like coding a normal HTML tag, it’s extremely easy. In this tutorial, you will restructure the last JSF 2.0 hello world example, so that, when the button is clicked, it will make an Ajax request instead of submitting the whole form.
1. JSF 2.0 Page
A JSF 2.0 xhtml page with Ajax support.
helloAjax.xhtml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html"> <h:body> <h3>JSF 2.0 + Ajax Hello World Example</h3> <h:form> <h:inputText id="name" value="#{helloBean.name}"></h:inputText> <h:commandButton value="Welcome Me"> <f:ajax execute="name" render="output" /> </h:commandButton> <h2><h:outputText id="output" value="#{helloBean.sayWelcome}" /></h2> </h:form> </h:body> </html>
In this example, it make the button Ajaxable. When the button is clicked, it will make an Ajax request to the server instead of submitting the whole form.
<h:commandButton value="Welcome Me"> <f:ajax execute="name" render="output" /> </h:commandButton> <h:outputText id="output" value="#{helloBean.sayWelcome}" />
In the <f:ajax> tag :
- execute=”name” – Indicate the form component with an Id of “name” will be sent to the server for processing. For multiple components, just split it with a space in between, e.g execute=”name anotherId anotherxxId”. In this case, it will submit the text box value.
- render=”output” – After the Ajax request, it will refresh the component with an id of “output“. In this case, after the Ajax request is finished, it will refresh the <h:outputText> component.
2. ManagedBean
See the full #{helloBean} example.
HelloBean.java
package com.mkyong.common; import javax.faces.bean.ManagedBean; import javax.faces.bean.SessionScoped; import java.io.Serializable; @ManagedBean @SessionScoped public class HelloBean implements Serializable { private static final long serialVersionUID = 1L; private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSayWelcome(){ //check if null? if("".equals(name) || name ==null){ return ""; }else{ return "Ajax message : Welcome " + name; } } }
3. How it work?
Access the URL : http://localhost:8080/JavaServerFaces/helloAjax.jsf

When the button is clicked, it makes an Ajax request and pass the text box value to the server for processing. After that, it refresh the outputText component and display the value via getSayWelcome() method, without any “page flipping effect“.

Hi, I tried this and it worked nicely, then I tried to migrate the files to a web project I have, it runs fine but after testing the page, closing web browser, then re-running it the web page opens up with the previous results instead of the results before calling ajax. Is there something in the Maven project that resets the page?
sorry to clarify – the last line should be “instead of the blank form before clicking submit”
xhtml code is a bit buggy:
mojarra is not defined and ajax refresh is not work.
place h:head /h:head before h:body
http://forums.oracle.com/forums/thread.jspa?threadID=2133512
A part of my code is missing, sorry
Look here my code complete ==> http://community.jboss.org/thread/166401
Hello guys!
I need re-render a outputPanel in a form outside of a form of my input component.
Look the situation
I try put render=”:busca_produto” but doesn’t work.
Look the error message
f:ajax> contains an unknown id ‘:busca_produto’ – cannot locate it in the context of the component inputNumber
Another shot
Message:
javax.servlet.ServletException: inputNumber
Help me
In the above example it is refreshing only one component .
I want to refresh multiple components using ajax request how can i do that ?
Thanks,
Srinivas rao.
I download the example and run. I also watched the traffic using HTTPFox, what I saw is that the whole page returns and not just the “Ajax message : Welcome Dan” text.
please advise what might I done wrong?
Thanks,
Dan
[...] JSF 2.0 + Ajax hello world example In JSF 2.0, coding Ajax is just like coding a normal HTML tag, it’s extremely easy. In this tutorial, you will restructure the last JSF 2.0 hello world example, so that, when the button is clicked, it will make an Ajax request instead of submitting the whole form. [...]
[...] JSF 2.0 + Ajax hello world example This article was posted in JSF2 category. [...]