Announcement Announcement Module
Collapse
No announcement yet.
Richface component is not rendered Page Title Module
Move Remove Collapse
X
Conversation Detail Module
Collapse
  • Filter
  • Time
  • Show
Clear All
new posts

  • 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

  • #2
    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>

    Comment


    • #3
      Thank you very much. It worked.

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


      Best Regards,

      ssroy

      Comment


      • #4
        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.

        Comment


        • #5
          Thank you very much.

          Rgds - ssroy

          Comment

          Working...
          X