<a4j:outputpanel> issue
sathish1712 Jan 11, 2010 11:15 PMHi,
I'm facing a typical problem.
//main.html
<!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:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:rich="http://richfaces.org/rich"
xmlns:a4j="http://richfaces.org/a4j">
<body>
<a4j:form>
<rich:panel style=" height : 550px;">
<f:facet name="header">#{msgs.search_heading}</f:facet>
<rich:messages style="color:red"/>
<h:panelGrid columns="3">
<h:outputText value="#{msgs.search_type}" />
<h:selectOneMenu value="#{searchBean.selectedId}">
<f:selectItem itemLabel="Select type" itemValue="0" />
<f:selectItem itemLabel="MessageId" itemValue="1" />
<f:selectItem itemLabel="TrackId" itemValue="2" />
<f:selectItem itemLabel="All Messages" itemValue="3" />
<a4j:support event="onchange" actionListener="#{searchBean.process}" ajaxSingle="true"/>
</h:selectOneMenu>
</h:panelGrid>
<rich:spacer height="5" />
<a4j:outputPanel id="one" ajaxRendered="true">
<h:panelGrid columns="3" rendered="#{searchBean.renderOne}">
<h:outputText value="#{searchBean.messageLable}" />
<h:inputText value="#{searchBean.id}" required="true"
requiredMessage="Please enter the id" />
</h:panelGrid>
<h:panelGrid columns="2" rendered="#{searchBean.renderTwo}">
<h:outputText value="#{msgs.search_fromdate}" />
<rich:calendar value="#{searchBean.fromdate}"
enableManualInput="false" popup="true" datePattern="dd/MM/yyyy"
showWeeksBar="false" />
<h:outputText value="#{msgs.search_todate}" />
<rich:calendar value="#{searchBean.todate}"
enableManualInput="false" popup="true" datePattern="dd/MM/yyyy"
showWeeksBar="false" />
</h:panelGrid>
</a4j:outputPanel>
<a4j:commandButton action="#{searchBean.execute}" value="Submit" />
</rich:panel>
</a4j:form>
</body>
</html>
//my bean isin request scope
public class SearchBean {
private String selectedId;
private String id;
private String messageLable;
private boolean renderOne;
private boolean renderTwo;
private boolean renderSubmit;
private Date fromdate;
private Date todate;
public SearchBean() {
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
System.out.println("in set id " + id);
}
public Date getFromdate() {
return fromdate;
}
public void setFromdate(Date fromdate) {
this.fromdate = fromdate;
}
public Date getTodate() {
return todate;
}
public void setTodate(Date todate) {
this.todate = todate;
}
public String getMessageLable() {
return messageLable;
}
public void setMessageLable(String messageLable) {
this.messageLable = messageLable;
}
public boolean isRenderSubmit() {
return renderSubmit;
}
public void setRenderSubmit(boolean renderSubmit) {
this.renderSubmit = renderSubmit;
}
public String getSelectedId() {
return selectedId;
}
public void setSelectedId(String selectedId) {
this.selectedId = selectedId;
}
public boolean isRenderOne() {
return renderOne;
}
public void setRenderOne(boolean renderOne) {
this.renderOne = renderOne;
}
public boolean isRenderTwo() {
return renderTwo;
}
public void setRenderTwo(boolean renderTwo) {
this.renderTwo = renderTwo;
}
public void process(ActionEvent event) {
if (selectedId != null && selectedId.equalsIgnoreCase("1")) {
setMessageLable("Message Id");
setRenderOne(true);
setRenderSubmit(true);
} else if (selectedId != null && selectedId.equalsIgnoreCase("2")) {
setMessageLable("Track Id");
setRenderOne(true);
setRenderSubmit(true);
} else if (selectedId != null && selectedId.equalsIgnoreCase("3")) {
setMessageLable(null);
setRenderOne(false);
setRenderTwo(true);
setRenderSubmit(true);
} else {
setMessageLable(null);
setRenderOne(false);
setRenderTwo(false);
setRenderSubmit(false);
}
}
public String execute() {
System.out.println("in execute id is " + id);
System.out.println("from date" + fromdate);
System.out.println("to date" + todate);
return null;
}
}
The problem here is, based on the option selected from drop down, i have to display the second row and this is working but when i submit the form.
in bean all the values coming as null. even validation is not working. if i remove the <a4j:outputpanel> values are available in bean, but rendering is not working properly. could somebody help me on this. thanks in advance.