You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by lu...@apache.org on 2011/08/18 19:53:47 UTC
svn commit: r1159328 - in /myfaces/core/trunk/impl/src:
main/java/org/apache/myfaces/view/facelets/
main/java/org/apache/myfaces/view/facelets/tag/composite/
test/java/org/apache/myfaces/view/facelets/tag/composite/
test/resources/org/apache/myfaces/vi...
Author: lu4242
Date: Thu Aug 18 17:53:46 2011
New Revision: 1159328
URL: http://svn.apache.org/viewvc?rev=1159328&view=rev
Log:
MYFACES-3285 cc:attribute targetAttributeName does not work well on nested cases and combinations of "targets" and EL expressions
Added:
myfaces/core/trunk/impl/src/test/resources/org/apache/myfaces/view/facelets/tag/composite/resources/testComposite/compositeAttributeActionMethodExpressionTarget3.xhtml
myfaces/core/trunk/impl/src/test/resources/org/apache/myfaces/view/facelets/tag/composite/resources/testComposite/simpleAttributeActionMethodExpressionTarget3.xhtml
myfaces/core/trunk/impl/src/test/resources/org/apache/myfaces/view/facelets/tag/composite/testCompositeAttributeActionMethodExpressionTarget3.xhtml
myfaces/core/trunk/impl/src/test/resources/org/apache/myfaces/view/facelets/tag/composite/testSimpleAttributeActionMethodExpressionTarget3.xhtml
Modified:
myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/view/facelets/FaceletViewDeclarationLanguage.java
myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/view/facelets/tag/composite/RetargetMethodExpressionRule.java
myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/view/facelets/tag/composite/CompositeComponentMethodExpressionTestCase.java
Modified: myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/view/facelets/FaceletViewDeclarationLanguage.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/view/facelets/FaceletViewDeclarationLanguage.java?rev=1159328&r1=1159327&r2=1159328&view=diff
==============================================================================
--- myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/view/facelets/FaceletViewDeclarationLanguage.java (original)
+++ myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/view/facelets/FaceletViewDeclarationLanguage.java Thu Aug 18 17:53:46 2011
@@ -937,8 +937,8 @@ public class FaceletViewDeclarationLangu
}
String attributeName = propertyDescriptor.getName();
- boolean isKnownMethod = "action".equals(attributeName) || "actionListener".equals(attributeName)
- || "validator".equals(attributeName) || "valueChangeListener".equals(attributeName);
+ //boolean isKnownMethod = "action".equals(attributeName) || "actionListener".equals(attributeName)
+ // || "validator".equals(attributeName) || "valueChangeListener".equals(attributeName);
// <composite:attribute> method-signature attribute is
// ValueExpression that must evaluate to String
@@ -952,8 +952,26 @@ public class FaceletViewDeclarationLangu
methodSignature = (String) methodSignatureExpression.getValue(elContext);
}
+ String targetAttributeName = null;
+ ValueExpression targetAttributeNameVE = (ValueExpression)propertyDescriptor.getValue("targetAttributeName");
+ if (targetAttributeNameVE != null)
+ {
+ targetAttributeName = (String) targetAttributeNameVE.getValue(context.getELContext());
+ if (targetAttributeName == null)
+ {
+ targetAttributeName = attributeName;
+ }
+ }
+ else
+ {
+ targetAttributeName = attributeName;
+ }
+
+ boolean isKnownTargetAttributeMethod = "action".equals(targetAttributeName) || "actionListener".equals(targetAttributeName)
+ || "validator".equals(targetAttributeName) || "valueChangeListener".equals(targetAttributeName);
+
// either the attributeName has to be a knownMethod or there has to be a method-signature
- if (isKnownMethod || methodSignature != null)
+ if (isKnownTargetAttributeMethod || methodSignature != null)
{
ValueExpression targetsExpression =
(ValueExpression) propertyDescriptor.getValue("targets");
@@ -1029,24 +1047,6 @@ public class FaceletViewDeclarationLangu
CompositeComponentELUtils.isCompositeComponentAttrsMethodExpression(
attributeNameValueExpression.getExpressionString());
- String targetAttributeName = null;
- ValueExpression targetAttributeNameVE = (ValueExpression)propertyDescriptor.getValue("targetAttributeName");
- if (targetAttributeNameVE != null)
- {
- targetAttributeName = (String) targetAttributeNameVE.getValue(context.getELContext());
- if (targetAttributeName == null)
- {
- targetAttributeName = attributeName;
- }
- }
- else
- {
- targetAttributeName = attributeName;
- }
-
- boolean isKnownTargetAttributeMethod = "action".equals(targetAttributeName) || "actionListener".equals(targetAttributeName)
- || "validator".equals(targetAttributeName) || "valueChangeListener".equals(targetAttributeName);
-
if (isKnownTargetAttributeMethod)
{
// To add support to #{cc.attrs.action}, #{cc.attrs.actionListener}, #{cc.attrs.validator} or
@@ -1055,7 +1055,7 @@ public class FaceletViewDeclarationLangu
// org.apache.myfaces.view.facelets.tag.composite.RetargetMethodExpressionRule already put
// a ValueExpression, so we only need to put a MethodExpression when a non redirecting
// expression is used (for example when a nested #{cc.attrs.xxx} is used).
- if ("action".equals(attributeName))
+ if ("action".equals(targetAttributeName))
{
// target is ActionSource2
methodExpression = reWrapMethodExpression(context.getApplication().getExpressionFactory().
@@ -1070,7 +1070,7 @@ public class FaceletViewDeclarationLangu
}
// Otherwise keep the current ValueExpression, because it will be used chain other value expressions
}
- else if ("actionListener".equals(attributeName))
+ else if ("actionListener".equals(targetAttributeName))
{
// target is ActionSource2
methodExpression = reWrapMethodExpression(context.getApplication().getExpressionFactory().
@@ -1089,7 +1089,7 @@ public class FaceletViewDeclarationLangu
}
// Otherwise keep the current ValueExpression, because it will be used chain other value expressions
}
- else if ("validator".equals(attributeName))
+ else if ("validator".equals(targetAttributeName))
{
// target is EditableValueHolder
methodExpression = reWrapMethodExpression(context.getApplication().getExpressionFactory().
@@ -1105,7 +1105,7 @@ public class FaceletViewDeclarationLangu
}
// Otherwise keep the current ValueExpression, because it will be used chain other value expressions
}
- else if ("valueChangeListener".equals(attributeName))
+ else if ("valueChangeListener".equals(targetAttributeName))
{
// target is EditableValueHolder
methodExpression = reWrapMethodExpression(context.getApplication().getExpressionFactory().
@@ -1352,8 +1352,8 @@ public class FaceletViewDeclarationLangu
if (attributeName.equals(propertyDescriptor.getName()))
{
- boolean isKnownMethod = "action".equals(attributeName) || "actionListener".equals(attributeName)
- || "validator".equals(attributeName) || "valueChangeListener".equals(attributeName);
+ //boolean isKnownMethod = "action".equals(attributeName) || "actionListener".equals(attributeName)
+ //|| "validator".equals(attributeName) || "valueChangeListener".equals(attributeName);
// <composite:attribute> method-signature attribute is
// ValueExpression that must evaluate to String
@@ -1367,22 +1367,40 @@ public class FaceletViewDeclarationLangu
methodSignature = (String) methodSignatureExpression.getValue(elContext);
}
+ String targetAttributeName = null;
+ ValueExpression targetAttributeNameVE = (ValueExpression)propertyDescriptor.getValue("targetAttributeName");
+ if (targetAttributeNameVE != null)
+ {
+ targetAttributeName = (String) targetAttributeNameVE.getValue(context.getELContext());
+ if (targetAttributeName == null)
+ {
+ targetAttributeName = attributeName;
+ }
+ }
+ else
+ {
+ targetAttributeName = attributeName;
+ }
+
+ boolean isKnownTargetAttributeMethod = "action".equals(targetAttributeName) || "actionListener".equals(targetAttributeName)
+ || "validator".equals(targetAttributeName) || "valueChangeListener".equals(targetAttributeName);
+
// either the attributeName has to be a knownMethod or there has to be a method-signature
- if (isKnownMethod || methodSignature != null)
+ if (isKnownTargetAttributeMethod || methodSignature != null)
{
- if ("action".equals(attributeName))
+ if ("action".equals(targetAttributeName))
{
return !(component instanceof ActionSource2);
}
- else if ("actionListener".equals(attributeName))
+ else if ("actionListener".equals(targetAttributeName))
{
return !(component instanceof ActionSource2);
}
- else if ("validator".equals(attributeName))
+ else if ("validator".equals(targetAttributeName))
{
return !(component instanceof EditableValueHolder);
}
- else if ("valueChangeListener".equals(attributeName))
+ else if ("valueChangeListener".equals(targetAttributeName))
{
return !(component instanceof EditableValueHolder);
}
Modified: myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/view/facelets/tag/composite/RetargetMethodExpressionRule.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/view/facelets/tag/composite/RetargetMethodExpressionRule.java?rev=1159328&r1=1159327&r2=1159328&view=diff
==============================================================================
--- myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/view/facelets/tag/composite/RetargetMethodExpressionRule.java (original)
+++ myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/view/facelets/tag/composite/RetargetMethodExpressionRule.java Thu Aug 18 17:53:46 2011
@@ -22,6 +22,7 @@ import java.beans.PropertyDescriptor;
import javax.el.ValueExpression;
import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
import javax.faces.view.facelets.FaceletContext;
import javax.faces.view.facelets.MetaRule;
import javax.faces.view.facelets.Metadata;
@@ -87,6 +88,22 @@ final class RetargetMethodExpressionRule
{
return new RetargetValueExpressionMapper(attribute, name);
}
+
+ ValueExpression targetAttributeNameVE =
+ (ValueExpression)propertyDescriptor.getValue("targetAttributeName");
+ if (targetAttributeNameVE != null)
+ {
+ return new RetargetValueExpressionMapper(attribute, name);
+ }
+
+ //if there is a targets declaration, is a retarget without doubt
+ ValueExpression targets =
+ (ValueExpression)propertyDescriptor.getValue("targets");
+
+ if (targets != null)
+ {
+ return new RetargetValueExpressionMapper(attribute, name);
+ }
}
}
return null;
Modified: myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/view/facelets/tag/composite/CompositeComponentMethodExpressionTestCase.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/view/facelets/tag/composite/CompositeComponentMethodExpressionTestCase.java?rev=1159328&r1=1159327&r2=1159328&view=diff
==============================================================================
--- myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/view/facelets/tag/composite/CompositeComponentMethodExpressionTestCase.java (original)
+++ myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/view/facelets/tag/composite/CompositeComponentMethodExpressionTestCase.java Thu Aug 18 17:53:46 2011
@@ -411,6 +411,35 @@ public class CompositeComponentMethodExp
Assert.assertEquals(bean.doSomeAction(), testComponentNoTarget.getActionExpression().invoke(facesContext.getELContext(), null));
compositeComponent.popComponentFromEL(facesContext);
}
+
+ @Test
+ public void testSimpleActionMethodExpressionTarget3() throws Exception
+ {
+ MockAttributeBean bean = new MockAttributeBean();
+
+ facesContext.getExternalContext().getRequestMap().put("bean",
+ bean);
+
+ UIViewRoot root = facesContext.getViewRoot();
+ vdl.buildView(facesContext, root, "testSimpleAttributeActionMethodExpressionTarget3.xhtml");
+
+
+ UIComponent panelGroup1 = root.findComponent("testGroup1");
+ Assert.assertNotNull(panelGroup1);
+ UINamingContainer compositeComponent = (UINamingContainer) panelGroup1.getChildren().get(0);
+ Assert.assertNotNull(compositeComponent);
+ UICommand testComponent = (UICommand) compositeComponent.findComponent("testComponent");
+ Assert.assertNotNull(testComponent);
+ Assert.assertNotNull(testComponent.getActionExpression());
+ Assert.assertEquals(bean.doSomeAction(), testComponent.getActionExpression().invoke(facesContext.getELContext(), null));
+
+ UICommand testComponentNoTarget = (UICommand) compositeComponent.findComponent("testComponentNoTarget");
+ Assert.assertNotNull(testComponentNoTarget);
+ Assert.assertNotNull(testComponentNoTarget.getActionExpression());
+ compositeComponent.pushComponentToEL(facesContext, compositeComponent);
+ Assert.assertEquals(bean.doSomeAction(), testComponentNoTarget.getActionExpression().invoke(facesContext.getELContext(), null));
+ compositeComponent.popComponentFromEL(facesContext);
+ }
@Test
public void testCompositeActionMethodExpressionTarget2() throws Exception
@@ -493,5 +522,60 @@ public class CompositeComponentMethodExp
compositeComponent3.popComponentFromEL(facesContext);
compositeComponent.popComponentFromEL(facesContext);
}
+
+ @Test
+ public void testCompositeActionMethodExpressionTarget3() throws Exception
+ {
+ MockAttributeBean bean = new MockAttributeBean();
+
+ facesContext.getExternalContext().getRequestMap().put("bean",
+ bean);
+
+ UIViewRoot root = facesContext.getViewRoot();
+ vdl.buildView(facesContext, root, "testCompositeAttributeActionMethodExpressionTarget3.xhtml");
+
+
+ UIComponent panelGroup1 = root.findComponent("testGroup1");
+ Assert.assertNotNull(panelGroup1);
+ UINamingContainer compositeComponent = (UINamingContainer) panelGroup1.getChildren().get(0);
+ Assert.assertNotNull(compositeComponent);
+
+ UINamingContainer compositeComponent2 = (UINamingContainer) compositeComponent.findComponent("simpleAttributeMethodExpressionTarget");
+ Assert.assertNotNull(compositeComponent2);
+ UICommand testComponent = (UICommand) compositeComponent2.findComponent("testComponent");
+ Assert.assertNotNull(testComponent);
+ Assert.assertNotNull(testComponent.getActionExpression());
+ Assert.assertEquals(bean.doSomeAction(), testComponent.getActionExpression().invoke(facesContext.getELContext(), null));
+
+ UICommand testComponentNoTarget = (UICommand) compositeComponent2.findComponent("testComponentNoTarget");
+ Assert.assertNotNull(testComponentNoTarget);
+ Assert.assertNotNull(testComponentNoTarget.getActionExpression());
+ compositeComponent.pushComponentToEL(facesContext, compositeComponent);
+ compositeComponent2.pushComponentToEL(facesContext, compositeComponent2);
+ Assert.assertEquals(bean.doSomeAction(), testComponentNoTarget.getActionExpression().invoke(facesContext.getELContext(), null));
+ compositeComponent2.popComponentFromEL(facesContext);
+ compositeComponent.popComponentFromEL(facesContext);
+
+ UINamingContainer compositeComponent3 = (UINamingContainer) compositeComponent.findComponent("simpleAttributeMethodExpressionNoTarget");
+ Assert.assertNotNull(compositeComponent3);
+ UICommand testComponent3 = (UICommand) compositeComponent3.findComponent("testComponent");
+ Assert.assertNotNull(testComponent3);
+ Assert.assertNotNull(testComponent3.getActionExpression());
+ compositeComponent.pushComponentToEL(facesContext, compositeComponent);
+ compositeComponent3.pushComponentToEL(facesContext, compositeComponent3);
+ Assert.assertEquals(bean.doSomeAction(), testComponent3.getActionExpression().invoke(facesContext.getELContext(), null));
+ compositeComponent3.popComponentFromEL(facesContext);
+ compositeComponent.popComponentFromEL(facesContext);
+
+ UICommand testComponentNoTarget3 = (UICommand) compositeComponent3.findComponent("testComponentNoTarget");
+ Assert.assertNotNull(testComponentNoTarget3);
+ Assert.assertNotNull(testComponentNoTarget3.getActionExpression());
+ compositeComponent.pushComponentToEL(facesContext, compositeComponent);
+ compositeComponent3.pushComponentToEL(facesContext, compositeComponent3);
+ Assert.assertEquals(bean.doSomeAction(), testComponentNoTarget3.getActionExpression().invoke(facesContext.getELContext(), null));
+ compositeComponent3.popComponentFromEL(facesContext);
+ compositeComponent.popComponentFromEL(facesContext);
+ }
+
}
Added: myfaces/core/trunk/impl/src/test/resources/org/apache/myfaces/view/facelets/tag/composite/resources/testComposite/compositeAttributeActionMethodExpressionTarget3.xhtml
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/test/resources/org/apache/myfaces/view/facelets/tag/composite/resources/testComposite/compositeAttributeActionMethodExpressionTarget3.xhtml?rev=1159328&view=auto
==============================================================================
--- myfaces/core/trunk/impl/src/test/resources/org/apache/myfaces/view/facelets/tag/composite/resources/testComposite/compositeAttributeActionMethodExpressionTarget3.xhtml (added)
+++ myfaces/core/trunk/impl/src/test/resources/org/apache/myfaces/view/facelets/tag/composite/resources/testComposite/compositeAttributeActionMethodExpressionTarget3.xhtml Thu Aug 18 17:53:46 2011
@@ -0,0 +1,34 @@
+<!--
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+ $Id: defineInclude.xml 804043 2009-08-13 22:08:44Z lu4242 $
+-->
+<!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:h="http://java.sun.com/jsf/html"
+ xmlns:f="http://java.sun.com/jsf/core"
+ xmlns:composite="http://java.sun.com/jsf/composite"
+ xmlns:tc="http://myfaces.apache.org/testComponent"
+ xmlns:testComposite="http://java.sun.com/jsf/composite/testComposite">
+<head>
+</head>
+<body>
+<composite:interface>
+ <composite:attribute name="submitAction" targets="simpleAttributeMethodExpressionTarget" targetAttributeName="action"/>
+</composite:interface>
+<composite:implementation>
+ <testComposite:simpleAttributeActionMethodExpressionTarget2 id="simpleAttributeMethodExpressionTarget"/>
+ <testComposite:simpleAttributeActionMethodExpressionTarget2 id="simpleAttributeMethodExpressionNoTarget" action="#{cc.attrs.submitAction}"/>
+</composite:implementation>
+</body>
+</html>
\ No newline at end of file
Added: myfaces/core/trunk/impl/src/test/resources/org/apache/myfaces/view/facelets/tag/composite/resources/testComposite/simpleAttributeActionMethodExpressionTarget3.xhtml
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/test/resources/org/apache/myfaces/view/facelets/tag/composite/resources/testComposite/simpleAttributeActionMethodExpressionTarget3.xhtml?rev=1159328&view=auto
==============================================================================
--- myfaces/core/trunk/impl/src/test/resources/org/apache/myfaces/view/facelets/tag/composite/resources/testComposite/simpleAttributeActionMethodExpressionTarget3.xhtml (added)
+++ myfaces/core/trunk/impl/src/test/resources/org/apache/myfaces/view/facelets/tag/composite/resources/testComposite/simpleAttributeActionMethodExpressionTarget3.xhtml Thu Aug 18 17:53:46 2011
@@ -0,0 +1,33 @@
+<!--
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+ $Id: defineInclude.xml 804043 2009-08-13 22:08:44Z lu4242 $
+-->
+<!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:h="http://java.sun.com/jsf/html"
+ xmlns:f="http://java.sun.com/jsf/core"
+ xmlns:composite="http://java.sun.com/jsf/composite"
+ xmlns:tc="http://myfaces.apache.org/testComponent">
+<head>
+</head>
+<body>
+<composite:interface>
+ <composite:attribute name="submitAction" targets="testComponent" targetAttributeName="action"/>
+</composite:interface>
+<composite:implementation>
+ <h:commandButton id="testComponent" value="Press Me!"/>
+ <h:commandButton id="testComponentNoTarget" value="Press Me!" action="#{cc.attrs.submitAction}"/>
+</composite:implementation>
+</body>
+</html>
\ No newline at end of file
Added: myfaces/core/trunk/impl/src/test/resources/org/apache/myfaces/view/facelets/tag/composite/testCompositeAttributeActionMethodExpressionTarget3.xhtml
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/test/resources/org/apache/myfaces/view/facelets/tag/composite/testCompositeAttributeActionMethodExpressionTarget3.xhtml?rev=1159328&view=auto
==============================================================================
--- myfaces/core/trunk/impl/src/test/resources/org/apache/myfaces/view/facelets/tag/composite/testCompositeAttributeActionMethodExpressionTarget3.xhtml (added)
+++ myfaces/core/trunk/impl/src/test/resources/org/apache/myfaces/view/facelets/tag/composite/testCompositeAttributeActionMethodExpressionTarget3.xhtml Thu Aug 18 17:53:46 2011
@@ -0,0 +1,29 @@
+<!--
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+ $Id: defineInclude.xml 804043 2009-08-13 22:08:44Z lu4242 $
+-->
+<!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:h="http://java.sun.com/jsf/html"
+ xmlns:f="http://java.sun.com/jsf/core"
+ xmlns:testComposite="http://java.sun.com/jsf/composite/testComposite">
+<head>
+</head>
+<body>
+<h:panelGroup id="testGroup1">
+<testComposite:compositeAttributeActionMethodExpressionTarget3 submitAction="#{bean.doSomeAction}">
+</testComposite:compositeAttributeActionMethodExpressionTarget3>
+</h:panelGroup>
+</body>
+</html>
\ No newline at end of file
Added: myfaces/core/trunk/impl/src/test/resources/org/apache/myfaces/view/facelets/tag/composite/testSimpleAttributeActionMethodExpressionTarget3.xhtml
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/test/resources/org/apache/myfaces/view/facelets/tag/composite/testSimpleAttributeActionMethodExpressionTarget3.xhtml?rev=1159328&view=auto
==============================================================================
--- myfaces/core/trunk/impl/src/test/resources/org/apache/myfaces/view/facelets/tag/composite/testSimpleAttributeActionMethodExpressionTarget3.xhtml (added)
+++ myfaces/core/trunk/impl/src/test/resources/org/apache/myfaces/view/facelets/tag/composite/testSimpleAttributeActionMethodExpressionTarget3.xhtml Thu Aug 18 17:53:46 2011
@@ -0,0 +1,29 @@
+<!--
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+ $Id: defineInclude.xml 804043 2009-08-13 22:08:44Z lu4242 $
+-->
+<!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:h="http://java.sun.com/jsf/html"
+ xmlns:f="http://java.sun.com/jsf/core"
+ xmlns:testComposite="http://java.sun.com/jsf/composite/testComposite">
+<head>
+</head>
+<body>
+<h:panelGroup id="testGroup1">
+<testComposite:simpleAttributeActionMethodExpressionTarget3 submitAction="#{bean.doSomeAction}">
+</testComposite:simpleAttributeActionMethodExpressionTarget3>
+</h:panelGroup>
+</body>
+</html>
\ No newline at end of file