Results 1 to 5 of 5

Thread: Richface component is not rendered

  1. #1

    Default Richface component is not rendered

    Hi,

    I want to use Richface with Spring web flow. Following are the content of different files for integration. But when I run the application, richface components are not rendered and I get a javascript error saying “Error: RichFaces is undefined”. Can anyone please tell me what am I missing.


    Code:
    web.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
    	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
    
    	<!-- The master configuration file for this Spring web application -->
    	<context-param>
    		<param-name>contextConfigLocation</param-name>
    		<param-value>
    			/WEB-INF/config/app-config.xml
    		</param-value>
    	</context-param>
    	
    	<!-- Use JSF view templates saved as *.xhtml, for use with Facelets -->
    	<context-param>
    		<param-name>javax.faces.DEFAULT_SUFFIX</param-name>
    		<param-value>.xhtml</param-value>
    	</context-param>
    	
    	<!-- Enables special Facelets debug output during development -->
      	<context-param>
            <param-name>facelets.DEVELOPMENT</param-name>
       		<param-value>true</param-value>
      	</context-param>
      	
      	<!-- Causes Facelets to refresh templates during development -->
      	<context-param>
      		<param-name>facelets.REFRESH_PERIOD</param-name>
      		<param-value>1</param-value>
      	</context-param>
        
        <!-- Enforce UTF-8 Character Encoding -->
        <filter>
            <filter-name>charEncodingFilter</filter-name>
            <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
            <init-param>
                <param-name>encoding</param-name>
                <param-value>UTF-8</param-value>
            </init-param>
            <init-param>
                <param-name>forceEncoding</param-name>
                <param-value>true</param-value>
            </init-param>
        </filter>
        
        <filter-mapping>
            <filter-name>charEncodingFilter</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping>
        
        <!-- Richface Integration Starts -->
    	<filter>
    		<display-name>RichFaces Filter</display-name>
    		<filter-name>richfaces</filter-name>
    		<filter-class>org.ajax4jsf.Filter</filter-class>
    	</filter>
    	<filter-mapping>
    		<filter-name>richfaces</filter-name>
    		<servlet-name>Faces Servlet</servlet-name>
    		<dispatcher>REQUEST</dispatcher>
    		<dispatcher>FORWARD</dispatcher>
    		<dispatcher>INCLUDE</dispatcher>
    	</filter-mapping>    
        
        <!-- Richface Integration Ends -->
        
    	<!-- Loads the Spring web application context -->
    	<listener>
    		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    	</listener>
    
    	<listener>
    		<listener-class>com.sun.faces.config.ConfigureListener</listener-class>
    	</listener>
    	  	
      	<!-- Serves static resource content from .jar files such as spring-faces.jar -->
    	<servlet>
    		<servlet-name>Resources Servlet</servlet-name>
    		<servlet-class>org.springframework.js.resource.ResourceServlet</servlet-class>
    		<load-on-startup>0</load-on-startup>
    	</servlet>
    		
    	<!-- Map all /resources requests to the Resource Servlet for handling -->
    	<servlet-mapping>
    		<servlet-name>Resources Servlet</servlet-name>
    		<url-pattern>/resources/*</url-pattern>
    	</servlet-mapping>
    	
    	<!-- The front controller of this Spring Web application, responsible for handling all application requests -->
    	<servlet>
    		<servlet-name>Spring MVC Dispatcher Servlet</servlet-name>
    		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    		<init-param>
    			<param-name>contextConfigLocation</param-name>
    			<param-value></param-value>
    		</init-param>
    		<load-on-startup>2</load-on-startup>
    	</servlet>
    		
    	<!-- Map all /spring requests to the Dispatcher Servlet for handling -->
    	<servlet-mapping>
    		<servlet-name>Spring MVC Dispatcher Servlet</servlet-name>
    		<url-pattern>/spring/*</url-pattern>
    	</servlet-mapping>
    
    	<!-- Just here so the JSF implementation can initialize, *not* used at runtime -->
    	<servlet>
    		<servlet-name>Faces Servlet</servlet-name>
    		<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
    		<load-on-startup>1</load-on-startup>
    	</servlet>
    	
    	<!-- Just here so the JSF implementation can initialize -->
    	<servlet-mapping>
    		<servlet-name>Faces Servlet</servlet-name>
    		<url-pattern>*.faces</url-pattern>
    	</servlet-mapping>
    
    
    	
    </web-app>
    Code:
    mvc-config.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="
               http://www.springframework.org/schema/beans
               http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
    	
    	<!-- Maps request paths to flows in the flowRegistry; e.g. a path of /hotels/booking looks for a flow with id "hotels/booking" -->
    	<bean class="org.springframework.webflow.mvc.servlet.FlowHandlerMapping">
    		<property name="flowRegistry" ref="flowRegistry" />
    		<property name="defaultHandler">
    			<!-- If no flow match, map path to a view to render; e.g. the "/intro" path would map to the view named "intro" -->	
    			<bean class="org.springframework.web.servlet.mvc.UrlFilenameViewController" />
    		</property>
    	</bean>
    	<!-- Dispatches requests mapped to flows to FlowHandler implementations -->  
    	
    	<bean class="org.springframework.webflow.mvc.servlet.FlowHandlerAdapter">
    		<property name="flowExecutor" ref="flowExecutor" />
    	</bean>
    
    	<bean id="flowController" class="org.springframework.webflow.mvc.servlet.FlowController">
    		<property name="flowExecutor" ref="flowExecutor"/>
    		<property name="ajaxHandler">
    			<bean class="org.springframework.faces.richfaces.RichFacesAjaxHandler" />
    		</property>
    	</bean>
    
    	<!-- Maps logical view names to Facelet templates in /WEB-INF (e.g. 'search' to '/WEB-INF/search.xhtml' -->
    	<bean id="faceletsViewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver">
    		<property name="viewClass" value="org.springframework.faces.mvc.JsfView"/>
    		<property name="prefix" value="/WEB-INF/" />
    		<property name="suffix" value=".xhtml" />
    	</bean>
    	
    	<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter" />
    	<bean id="user" class="za.coclient.UserBean" scope="session"/>
    </beans>
    Code:
    adhocPayment.xhtml -  Added Richface dropdown menu component here
    <ui:composition xmlns="http://www.w3.org/1999/xhtml"
    	    		xmlns:ui="http://java.sun.com/jsf/facelets"
    				xmlns:c="http://java.sun.com/jstl/core"
    				xmlns:h="http://java.sun.com/jsf/html"
    				xmlns:f="http://java.sun.com/jsf/core"
    				xmlns:sf="http://www.springframework.org/tags/faces"
    				xmlns:rich="http://richfaces.org/rich"
    				xmlns:a4j="http://richfaces.org/a4j"
    				template="/WEB-INF/layouts/standard.xhtml">
    
    <ui:define name="content">
    	<h:form id="AdhocMain">
    	
    		<fieldset>		
    		
    			<div class="left">
    				<rich:toolBar>
    					<rich:dropDownMenu value="Payments">
    						<rich:menuItem value="Account Summary" onclick="TransactionHistory.jsp" submitMode="none" />
    						<rich:menuItem value="Ad-Hoc Payment" onclick="AdHocPayment.jsp" submitMode="none" />
    					</rich:dropDownMenu>
    				</rich:toolBar>
    			</div>			
    			<div class="field">
    				<div class="label"><h:outputLabel>From Account No:</h:outputLabel></div>
    				<h:inputText id="fromaccountno" value="#{adhoc.paymentFrom}"></h:inputText>
    			</div>
    		
    			<div class="buttonGroup">
    				<sf:commandButton id="logon" value="Continue" processIds="*" action="submit" />
    			</div>
    		</fieldset>		
    
    	</h:form>
    </ui:define>
    </ui:composition>

    I have attached the snapshot of the error for your reference.

    Any help will be greatly appreciated

    Thanks in advance.

    Regards - ssroy
    Attached Images Attached Images

  2. #2

    Default

    Try changing your richfaces filter mapping to point to the spring servlet

    <filter-mapping>
    <filter-name>richfaces</filter-name>
    <servlet-name>Spring MVC Dispatcher Servlet</servlet-name>
    <dispatcher>REQUEST</dispatcher>
    <dispatcher>FORWARD</dispatcher>
    <dispatcher>INCLUDE</dispatcher>
    </filter-mapping>

  3. #3

    Default

    Thank you very much. It worked.

    Can you please let me know the reason for keeping this same.


    Best Regards,

    ssroy

  4. #4
    Join Date
    Jun 2006
    Location
    The Netherlands
    Posts
    13,624

    Default

    Al requests are handled by the dispatcher servlet, not the faces servlet. You want the filter to apply to the requests that are handled else the filter is useless.
    Marten Deinum
    Java Consultant / Pragmatist / Open Source Enthousiast / Author


    Pro Spring MVC: With Web Flow
    Conspect

    Have you read the reference guide.
    Use the [ code ] tags, young padawan

  5. #5

    Default

    Thank you very much.

    Rgds - ssroy

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •