Please tell us what to add, where, to get RichFaces to work with Seam.
With IceFaces it was a case of just dropping jars into EAR and updating the META-INF/application.xml
<!-- Icefaces -->
<module>
<java>icefaces.jar</java>
</module>
<module>
<java>icefaces-comps.jar</java>
</module>
<module>
<java>el-api.jar</java>
</module>
<module>
<java>el-ri.jar</java>
</module>
<module>
<java>icefaces-facelets.jar</java>
</module>
<module>
<java>commons-fileupload.jar</java>
</module>
Referencing the above jars into the War (as remote jars)
icefaces.jar, icefaces-comps.jar and icefaces-facelets.jar
Lobbing in the icefaces-component.tld in the WEB-INF (for some reason I haven't fathomed yet)
Referencing icefaces in the .xhtml pages
xmlns:ice="http://www.icesoft.com/icefaces/component"
Adding the backing bean support
/*
* GUI Support methods
*/
public String applyFilter() {
log.info("> applyFilter");
/*
* Set the model to to the results returned from the constraints
*/
log.info("Finding all the required organisations returned from the constraints" + organisation);
applyQueryBasedOnSearchCriteria();
log.info("< applyFilter");
return null;
}
/**
* The panel stack is controlled by a group of radio buttons and their state
* changes call this method to register the newly selected panel.
*
* @param event
* new value of event contains the new selected panel name.
*/
public void selectedSearchCriteriaPanelChanged(ValueChangeEvent event) {
log.info("> selectedSearchCriteriaPanelChanged");
log.info("applyingSearchCriteriaChange (All/Filtered)");
if (event.getNewValue() != null) {
selectedSearchCriteriaPanel = event.getNewValue().toString();
log.info(selectedSearchCriteriaPanel + " selected");
if (selectedSearchCriteriaPanel.equals(ALL_OPTION)) {
applyAllQuery();
} else {
applyQueryBasedOnSearchCriteria();
}
} else {
log.info("null new event passed in. Error!");
}
log.info("< selectedSearchCriteriaPanelChanged");
}
private void sort() {
Comparator organisationComparator = new Comparator() {
public int compare(Object o1, Object o2) {
Organisation organisation1 = (Organisation)o1;
Organisation organisation2 = (Organisation)o2;
if (sortColumn == null) {
return 0;
}
if (sortColumn.equals(messages.get("column_title_name"))) {
// Surname
if (!ascending) {
return (organisation1.getName().compareTo(organisation2.getName()));
} else {
return (organisation2.getName().compareTo(organisation1.getName()));
}
} else if (sortColumn.equals(messages.get("column_title_physical"))) {
// Firstname
if (ascending) {
if (organisation1.getPhysical() == true && organisation2.getPhysical() == false) {
return 1;
} else if (organisation1.getPhysical() == organisation2.getPhysical()) {
return 0;
} else if (organisation1.getPhysical() == false && organisation2.getPhysical() == true) {
return -1;
}
} else {
if (organisation2.getPhysical() == true && organisation1.getPhysical() == false) {
return 1;
} else if (organisation2.getPhysical() == organisation1.getPhysical()) {
return 0;
} else if (organisation2.getPhysical() == false && organisation1.getPhysical() == true) {
return -1;
}
}
} else if (sortColumn.equals(messages.get("column_title_creation_date"))) {
// Creation Date
if (ascending) {
return (organisation1.getDates().getCreationDate().compareTo(organisation2.getDates().getCreationDate()));
} else {
return (organisation2.getDates().getCreationDate().compareTo(organisation1.getDates().getCreationDate()));
}
}
return 0;
}
};
if (organisations != null) {
Arrays.sort(organisations, organisationComparator);
}
}
Some "intersting" xml in web.xml page.
<context-param>
<param-name>javax.faces.STATE_SAVING_METHOD</param-name>
<param-value>client</param-value>
</context-param>
<context-param>
<param-name>javax.faces.DEFAULT_SUFFIX</param-name>
<param-value>.xhtml</param-value>
</context-param>
<context-param>
<param-name>facelets.DEVELOPMENT</param-name>
<param-value>true</param-value>
</context-param>
<context-param>
<param-name>com.icesoft.faces.actionURLSuffix</param-name>
<param-value>.seam</param-value>
</context-param>
<context-param>
<param-name>com.icesoft.faces.synchronousUpdate</param-name>
<param-value>true</param-value>
</context-param>
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<!-- Added as trail from http://support.icesoft.com/jive/servlet/KbServlet/download/623-102-847/SeamKBArticle.txt
<context-param>
<param-name>com.icesoft.faces.doJSFStateManagement</param-name>
<param-value>true</param-value>
</context-param>
-->
<!-- Faces Servlet Mapping -->
<!--
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.seam</url-pattern>
</servlet-mapping>
-->
<servlet>
<servlet-name>Blocking Servlet</servlet-name>
<servlet-class>com.icesoft.faces.webapp.xmlhttp.BlockingServlet</servlet-class>
<load-on-startup> 1 </load-on-startup>
</servlet>
<servlet>
<servlet-name>Persistent Faces Servlet</servlet-name>
<servlet-class>com.icesoft.faces.webapp.xmlhttp.PersistentFacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Persistent Faces Servlet</servlet-name>
<url-pattern>/xmlhttp/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Persistent Faces Servlet</servlet-name>
<url-pattern>/xmlhttp/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Persistent Faces Servlet</servlet-name>
<url-pattern>*.iface</url-pattern>
</servlet-mapping>
<!-- file upload Servlet -->
<servlet>
<servlet-name>uploadServlet</servlet-name>
<servlet-class>com.icesoft.faces.component.inputfile.FileUploadServlet</servlet-class>
<load-on-startup> 1 </load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>uploadServlet</servlet-name>
<url-pattern>/uploadHtml</url-pattern>
</servlet-mapping>
Just a short post should give me a starting point.