<h:panelGroup> <a4j:keepAlive beanName="rsBean2" /> <h:form> <h:inputText size="4" label="First Addent" value="#{rsBean2.addent1}"> <a4j:support event="onkeyup" reRender="btn2" /> </h:inputText> <h:outputText value="+"/> <h:inputText size="4" label="Second Addent" value="#{rsBean2.addent2}"> <a4j:support event="onkeyup" reRender="btn2" /> </h:inputText> <a4j:commandButton style="margin:0 5px" id="btn2" action="#{rsBean2.doSum}" value="=" reRender="sum2" disabled="#{rsBean2.addent1 == null or rsBean2.addent2==null}"/> <h:outputText id="sum2" value="#{rsBean2.sum}" /> </h:form> <a4j:outputPanel ajaxRendered="true"> <h:messages /> </a4j:outputPanel> </h:panelGroup> ... package org.richfaces.demo.ajaxSamples; public class rsBean { private Integer addent1; private Integer addent2; private Integer sum; public String doSum() { sum = new Integer((addent1 != null ? addent1.intValue() : 0) + (addent2 != null ? addent2.intValue() : 0)); return null; } //getters and setters skipped }