[richfaces-issues] [JBoss JIRA] Commented: (RF-2319) h:commandLink and h:commandButton not working with RichFaces Portlet Bridge 3.1.4-GA / 3.1.4-SR1 in portlet/facelet environment

Pavel Myshkin (JIRA) jira-events at lists.jboss.org
Tue Mar 4 08:06:58 EST 2008


    [ http://jira.jboss.com/jira/browse/RF-2319?page=comments#action_12401223 ] 
            
Pavel Myshkin commented on RF-2319:
-----------------------------------

A workaround for this issue with a working example. ;)

Notice the : "/faces/rfRes//org/ajax4jsf/framework.pack.js" in jboss-portlet.xml  and another filter-mapping for "/faces/rfRes/*" and the empty org.ajax4jsf.RESOURCE_URI_PREFIX in web.xml.

God bless open source.


view.jsf
======
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<a4j:portlet xmlns="http://www.w3.org/1999/xhtml"
	xmlns:f="http://java.sun.com/jsf/core"
	xmlns:ui="http://java.sun.com/jsf/facelets"
	xmlns:h="http://java.sun.com/jsf/html"
	xmlns:a4j="http://richfaces.org/a4j"
	xmlns:rich="http://richfaces.org/rich">

	<h:outputText value="RichFaces components in the portal environment" />

	<h:form>
		<h:panelGrid columns="1" border="1">
			<h:inputText value="#{backbean.username}">
				<a4j:support event="onkeyup" reRender="text" />
			</h:inputText>
			<h:outputText id="text" value="#{backbean.username}" />


			<a4j:commandButton action="#{backbean.alteration}" value="Click" reRender="counter" >
			</a4j:commandButton>

			<a4j:commandLink value="Portlet Instances" action="#{backbean.alteration}" reRender="counter"/>
			<h:outputText id="counter" value="Click count: #{backbean.counter}" />
		</h:panelGrid>
	</h:form>

</a4j:portlet>

jboss-portlet.xml
=============
<?xml version="1.0"?>

<!DOCTYPE portlet-app PUBLIC
   "-//JBoss Portal//DTD JBoss Portlet 2.6//EN"
   "http://www.jboss.org/portal/dtd/jboss-portlet_2_6.dtd"><portlet-app>
    <portlet>
         <portlet-name>richPortlet</portlet-name>
          <header-content>
           <script src="/faces/rfRes//org/ajax4jsf/framework.pack.js" type="text/javascript" ></script>
           <script src="/faces/rfRes//org/richfaces/ui.pack.js" type="text/javascript" ></script>
           <link rel="stylesheet" type="text/css" href="/faces/rfRes//org/richfaces/skin.xcss" />
         </header-content>
    </portlet>
</portlet-app>

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">

	<display-name>Richfaces Example</display-name>

	<context-param>
		<param-name>org.ajax4jsf.VIEW_HANDLERS</param-name>
		<param-value>
			org.jboss.portletbridge.application.FaceletPortletViewHandler
		</param-value>
	</context-param>
	<context-param>
		<param-name>javax.portlet.faces.renderPolicy</param-name>
		<param-value>ALWAYS_DELEGATE</param-value>
	</context-param>
	<context-param>
		<param-name>
			javax.portlet.faces.preserveActionParams
		</param-name>
		<param-value>true</param-value>
	</context-param>
	<context-param>
		<param-name>org.ajax4jsf.RESOURCE_URI_PREFIX</param-name>
		<param-value></param-value>
	</context-param>
	<context-param>
		<param-name>org.richfaces.LoadStyleStrategy</param-name>
		<param-value>NONE</param-value>
	</context-param>
	<context-param>
		<param-name>org.richfaces.LoadScriptStrategy</param-name>
		<param-value>NONE</param-value>
	</context-param>
	<context-param>
		<param-name>org.ajax4jsf.COMPRESS_SCRIPT</param-name>
		<param-value>false</param-value>
	</context-param>


	<!-- JSF -->

	<context-param>
		<param-name>javax.faces.DEFAULT_SUFFIX</param-name>
		<param-value>.jsf</param-value>
	</context-param>

	<context-param>
		<param-name>org.richfaces.SKIN</param-name>
		<param-value>blueSky</param-value>
	</context-param>

	<context-param>
		<param-name>javax.faces.CONFIG_FILES</param-name>
		<param-value>/WEB-INF/faces-config.xml</param-value>
	</context-param>

	<context-param>
		<param-name>facelets.DEVELOPMENT</param-name>
		<param-value>true</param-value>
	</context-param>

	<filter>
		<display-name>Ajax4jsf Filter</display-name>
		<filter-name>ajax4jsf</filter-name>
		<filter-class>org.ajax4jsf.Filter</filter-class>
		<init-param>
			<param-name>forceparser</param-name>
			<param-value>false</param-value>
		</init-param>
	</filter>

	<filter-mapping>
		<filter-name>ajax4jsf</filter-name>
		<servlet-name>Faces Servlet</servlet-name>
		<url-pattern>*.jsf</url-pattern>
		<dispatcher>REQUEST</dispatcher>
		<dispatcher>FORWARD</dispatcher>
		<dispatcher>INCLUDE</dispatcher>
	</filter-mapping>

	<filter-mapping>
		<filter-name>ajax4jsf</filter-name>
		<servlet-name>Faces Servlet</servlet-name>
		<url-pattern>/faces/rfRes/*</url-pattern>
		<dispatcher>REQUEST</dispatcher>
		<dispatcher>FORWARD</dispatcher>
		<dispatcher>INCLUDE</dispatcher>
	</filter-mapping>

	<servlet>
		<servlet-name>FacesServlet</servlet-name>
		<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
		<load-on-startup>1</load-on-startup>
	</servlet>

	<servlet-mapping>
		<servlet-name>FacesServlet</servlet-name>
		<url-pattern>/faces/*</url-pattern>
	</servlet-mapping>

	<session-config>
		<session-timeout>10</session-timeout>
	</session-config>

	<welcome-file-list>
		<welcome-file>/faces/index.jsf</welcome-file>
	</welcome-file-list>
</web-app>

faces-config.xml
=============
<?xml version='1.0' encoding='UTF-8'?>

<faces-config 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-facesconfig_1_2.xsd"
	version="1.2">
	<application>
		<view-handler>
			org.jboss.portletbridge.application.PortletViewHandler
		</view-handler>
		<state-manager>
			org.jboss.portletbridge.application.PortalStateManager
		</state-manager>
	</application>
	<factory>
		<faces-context-factory>
			org.jboss.portletbridge.context.FacesContextFactoryImpl
		</faces-context-factory>
	</factory>
	<managed-bean>
		<managed-bean-name>backbean</managed-bean-name>
		<managed-bean-class>
			com.nielsen.poc.backbean.BackBean
		</managed-bean-class>
		<managed-bean-scope>session</managed-bean-scope>
	</managed-bean>
</faces-config>

BackBean.java
============
package com.nielsen.poc.backbean;

public class BackBean {
	public String username = "Pavel";
	public int counter = 0;

	public String getUsername() {
		return username;
	}

	public void setUsername(String username) {
		this.username = username;
	}

	public String alteration(){
		counter++;
		return "true";
	}

	public int getCounter() {
		return counter;
	}

	public void setCounter(int counter) {
		this.counter = counter;
	}
}

portlet.xml
=========
<portlet-app version="1.0"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/portlet"
	xmlns="http://java.sun.com/xml/ns/portlet">
	<portlet>
		<portlet-name>richPortlet</portlet-name>
		<portlet-class>
			javax.portlet.faces.GenericFacesPortlet
		</portlet-class>

		<init-param>
			<name>javax.portlet.faces.defaultViewId.view</name>
			<value>/faces/view.jsf</value>
		</init-param>
		<init-param>
			<name>javax.portlet.faces.defaultViewId.edit</name>
			<value>/faces/edit.jsf</value>
		</init-param>
		<init-param>
			<name>javax.portlet.faces.defaultViewId.help</name>
			<value>/faces/help.jsf</value>
		</init-param>
		<init-param>
			<name>javax.portlet.faces.preserveActionParams</name>
			<value>true</value>
		</init-param>
		<expiration-cache>-0</expiration-cache>
		<portlet-info>
			<title>RichFaces Example Portlet</title>
		</portlet-info>
		<supports>
			<mime-type>text/html</mime-type>
			<portlet-mode>VIEW</portlet-mode>
			<portlet-mode>EDIT</portlet-mode>
			<portlet-mode>HELP</portlet-mode>
		</supports>
	</portlet>
</portlet-app>

Nyst

> h:commandLink and h:commandButton not working with RichFaces Portlet Bridge 3.1.4-GA / 3.1.4-SR1 in portlet/facelet environment
> -------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: RF-2319
>                 URL: http://jira.jboss.com/jira/browse/RF-2319
>             Project: RichFaces
>          Issue Type: Bug
>    Affects Versions: 3.1.4
>         Environment: JBoss Portal 2.6.3-GA / JBoss [Trinity] 4.2.2.GA (build: SVNTag=JBoss_4_2_2_GA date=200710221139)
> Java version: 1.5.0_11,Sun Microsystems Inc.
> Java VM: Java HotSpot(TM) Client VM 1.5.0_11-b03,Sun Microsystems Inc.
> OS-System: Windows 2000 5.0,x86
>            Reporter: Andreas Chlupacek
>         Assigned To: Alexander Smirnov
>             Fix For: 3.2.0
>
>
> This might be a problem related to JIRA entry RF-2180, however we did not experience any view expired exception or JavaScript Errors described there. Furthermore, it seems to be related solely to the Portlet Bridge.
> Description:
> ==========
> A JSR-168 portlet project using RichFaces 3.1.3-GA and facelets was deployed on JBoss Portal 2.6.3. After upgrading the RichFaces Portlet Bridge libraries contained in the project to 3.1.4-GA, h:commandButton and h:commandLink components do not invoke the actions bound to them anymore. Upgrading to Portlet Bridge 3.1.4-SR1 does not remedy the problem either.
> Steps to reproduce:
> ================
> Set up a portlet application with the following artefacts:
> web.xml:
> <?xml version="1.0" encoding="UTF-8"?>
> <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
> 	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> 	xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
> 	<context-param>
> 		<param-name>org.richfaces.LoadStyleStrategy</param-name>
> 		<param-value>ALL</param-value>
> 	</context-param>
> 	<context-param>
> 		<param-name>org.ajax4jsf.COMPRESS_STYLE</param-name>
> 		<param-value>false</param-value>
> 	</context-param>	
> 	<context-param>
> 		<param-name>org.richfaces.LoadScriptStrategy</param-name>
> 		<param-value>ALL</param-value>
> 	</context-param>
> 	<context-param>
> 		<param-name>org.ajax4jsf.COMPRESS_SCRIPT</param-name>
> 		<param-value>false</param-value>
> 	</context-param>
> 	
> 	<context-param>
> 		<param-name>org.ajax4jsf.RESOURCE_URI_PREFIX</param-name>
> 		<param-value>rfRes</param-value>
> 	</context-param>
> 	<!-- This is optional parameters for a facelets based application -->
> 	<context-param>
> 		<param-name>org.ajax4jsf.VIEW_HANDLERS</param-name>
> 		<param-value>
> 			org.ajax4jsf.portlet.application.FaceletPortletViewHandler
> 		</param-value>
> 	</context-param>
> 	<context-param>
> 		<param-name>javax.portlet.faces.renderPolicy</param-name>
> 		<param-value>ALWAYS_DELEGATE</param-value>
> 	</context-param>
> 	<context-param>
> 		<param-name>facelets.DEVELOPMENT</param-name>
> 		<param-value>true</param-value>
> 	</context-param>
> 	<context-param>
> 		<param-name>facelets.SKIP_COMMENTS</param-name>
> 		<param-value>true</param-value>
> 	</context-param>
> 	<context-param>
> 		<param-name>facelets.VIEW_MAPPINGS</param-name>
> 		<param-value>*.xhtml</param-value>
> 	</context-param>
> 	<context-param>
> 		<param-name>javax.faces.STATE_SAVING_METHOD</param-name>
> 		<param-value>server</param-value>
> 	</context-param>
> 	<filter>
> 		<display-name>Ajax4jsf Filter</display-name>
> 		<filter-name>ajax4jsf</filter-name>
> 		<filter-class>org.ajax4jsf.Filter</filter-class>
> 	</filter>
> 	<filter-mapping>
> 		<filter-name>ajax4jsf</filter-name>
> 		<servlet-name>FacesServlet</servlet-name>
> 		<dispatcher>FORWARD</dispatcher>
> 		<dispatcher>REQUEST</dispatcher>
> 		<dispatcher>INCLUDE</dispatcher>
> 	</filter-mapping>
> 	<servlet>
> 		<servlet-name>FacesServlet</servlet-name>
> 		<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
> 		<load-on-startup>1</load-on-startup>
> 	</servlet>
> 	<servlet-mapping>
> 		<servlet-name>FacesServlet</servlet-name>
> 		<url-pattern>/faces/*</url-pattern>
> 	</servlet-mapping>
> 	<mime-mapping>
> 		<extension>svg</extension>
> 		<mime-type>image/svg+xml</mime-type>
> 	</mime-mapping>
> 	<login-config>
> 		<auth-method>BASIC</auth-method>
> 	</login-config>
> </web-app>
> faces-config.xml:
> <?xml version="1.0"?>
> <!DOCTYPE faces-config PUBLIC "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.1//EN"
>                               "http://java.sun.com/dtd/web-facesconfig_1_1.dtd">
> <faces-config>
>  <managed-bean>
>   <managed-bean-name>bean</managed-bean-name>
>   <managed-bean-class>de.tmobile.richfaces.test.Bean</managed-bean-class>
>   <managed-bean-scope>session</managed-bean-scope>
>  </managed-bean>
>  <!-- Richfaces configuration -->
>  <application>
>   <view-handler>org.ajax4jsf.portlet.application.PortletViewHandler</view-handler>
>   <state-manager>org.ajax4jsf.portlet.application.PortalStateManager</state-manager>
>  </application>
>  <factory>
>   <faces-context-factory>org.ajax4jsf.portlet.context.FacesContextFactoryImpl</faces-context-factory>
>  </factory>
> </faces-config>
> jboss-portlet.xml:
> <?xml version="1.0"?>
> <!DOCTYPE portlet-app PUBLIC
>    "-//JBoss Portal//DTD JBoss Portlet 2.6//EN"
>    "http://www.jboss.org/portal/dtd/jboss-portlet_2_6.dtd">
> <portlet-app>
> 	<portlet>
> 		<portlet-name>richFacesPortlet</portlet-name>
> 		<header-content>
>            <script src="/faces/rfRes/org/ajax4jsf/framework.pack.js" type="text/javascript" ></script>
>            <script src="/faces/rfRes/org/richfaces/ui.pack.js" type="text/javascript" ></script>
>            <link rel="stylesheet" type="text/css" href="/faces/rfRes/org/richfaces/skin.xcss" /> 
> 		</header-content>
> 	</portlet>
> 	
> </portlet-app>
> view.xhtml:
> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
> <a4j:portlet xmlns="http://www.w3.org/1999/xhtml" xmlns:f="http://java.sun.com/jsf/core"
> 	xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:h="http://java.sun.com/jsf/html"
> 	xmlns:a4j="http://richfaces.org/a4j" xmlns:rich="http://richfaces.org/rich">
> 	<h:outputText value="RichFaces components in the portal environment" />
> 	<h:form>
> 		<h:panelGrid columns="1" border="1">
> 			<h:inputText value="#{bean.text}">
> 				<a4j:support event="onkeyup" reRender="text,input" />
> 			</h:inputText>
> 			<h:outputText id="text" value="#{bean.text}" />
> 			<h:commandButton action="#{bean.click}" value="Click"></h:commandButton>
> 			<h:outputText id="counter" value="Click count: #{bean.counter}" />
> 		</h:panelGrid>
> 	</h:form>
> </a4j:portlet>
> Contents of /WEB-INF/lib:
> commons-beanutils-1.7.0.jar
> commons-collections-3.2.jar
> commons-digester-1.8.jar
> jsf-facelets.jar
> portletbridge-api-3.1.3.GA.jar
> portletbridge-impl-3.1.3.GA.jar
> richfaces-api-3.1.3.GA.jar
> richfaces-impl-3.1.3.GA.jar
> richfaces-ui-3.1.3.GA.jar
> Observed behaviour:
> ===================
> After upgrading the portletbridge jars to any version of 3.1.4, the action is not invoked. PhaseTracker shows that Stage 1 (Restore View) of the JSF lifecycle is executed and processing then directy advances to stage 6 (Render Response). 
> Expected behaviour:
> ===================
> The action should be invoked.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        



More information about the richfaces-issues mailing list