Migración de Ajax en RichFaces. Voy a mostrar las diferencias entre las 3 formas de hacer lo mismo con Richfaces 3.3, con JSF 2 y con Richfaces 4.0.
La aplicación es muy simple un “HelloWorld”. Tiene un campo de entrada para poner lo que se quiera y un linea que indica cuantas veces se ha saludado y el último saludo.
RichFaces 3.3 :
<h:form>
<h:outputText value=”Greeting:” />
<h:inputText value=”#{helloworldBean.text}” >
<a4j:support event=”onkeyup” action=”#{helloworldBean.hello}”
reRender=”text, count”/>
</h:inputText>
<br/>
<h:outputText value=”Text:” />
<h:outputText id=”text” value=”#{helloworldBean.text}” />
<h:outputText value=”Count:” />
<h:outputText id=”count” value=”#{helloworldBean.count}” />
</h:form>
El managed bean necesario (tiene que ser configurado en el faces-config.xml):
public class HelloworldBean {
private String text;
private Integer count;
public String getText(){
return text;
}
public void setText(String text){
this.text = text;
}
public Integer getCount(){
return count;
}
public void setCount(Integer count){
this.count = count;
}
public void hello() {
count++;
}
}
JSF 2 :
<h:form>
<h:outputText value=”Greeting:” />
<h:inputText value=”#{helloworldBean.text}” >
<f:ajax event=”keyup” execute=”@form” render=”text count”
listener=”#{helloworldBean.helloListener}”/>
</h:inputText>
<br/>
<h:outputText value=”Text:” />
<h:outputText id=”text” value=”#{helloworldBean.text}” />
<br/>
<h:outputText value=”Count:” />
<h:outputText id=”count” value=”#{helloworldBean.count}” />
</h:form>
El managed bean (no hace falta configurarlo en el facex-config.xml):
@ManagedBean(name=”helloworldBean”)
@RequestScoped
public class HelloworldBean {
private String text;
private Integer count;
public String getText(){
return text;
}
public void setText(String text){
this.text = text;
}
public Integer getCount(){
return count;
}
public void setCount(Integer count){
this.count = count;
}
public void helloListener(AjaxBehaviorEvent event) {
count++;
}
}
RichFaces 4.0 :
<h:form>
<h:outputText value=”Greeting:” />
<h:inputText value=”#{helloworldBean.text}” >
<a4j:ajax event=”keyup” render=”text,count”
listener=”#{helloworldBean.helloListener}”/>
</h:inputText>
<br/>
<h:outputText value=”Text:” />
<h:outputText id=”text” value=”#{helloworldBean.text}” />
<br/>
<h:outputText value=”Count:” />
<h:outputText id=”count” value=”#{helloworldBean.count}” />
</h:form>
El managed bean es el mismo que para JSF 2.
Como se ha observado al añadir soporte ajax directamente en JSF 2, el componente <a4j:support> ha sido sustituido por <a4j:ajax> para mantener la relación del nombre con el componente estandar.
Este componente añade caracteristicas adicionales al de JSF 2 mayor flexibilidad y potencia, como por ejemplo porde usar colas, más control en lo que se procesa y de renderiza… y muchas más cosas.
0 comentarios