You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by ta...@apache.org on 2017/12/09 19:09:11 UTC
svn commit: r1817652 - in /myfaces/core/branches/2.3.x/impl/src:
main/java/org/apache/myfaces/component/search/
test/java/org/apache/myfaces/component/search/
test/resources/org/apache/myfaces/component/search/
Author: tandraschko
Date: Sat Dec 9 19:09:10 2017
New Revision: 1817652
URL: http://svn.apache.org/viewvc?rev=1817652&view=rev
Log:
MYFACES-4176 Search expression fails to resolve component outside of form
Modified:
myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/component/search/SearchExpressionHandlerImpl.java
myfaces/core/branches/2.3.x/impl/src/test/java/org/apache/myfaces/component/search/SearchExpressionImplTest.java
myfaces/core/branches/2.3.x/impl/src/test/resources/org/apache/myfaces/component/search/search1.xhtml
Modified: myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/component/search/SearchExpressionHandlerImpl.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/component/search/SearchExpressionHandlerImpl.java?rev=1817652&r1=1817651&r2=1817652&view=diff
==============================================================================
--- myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/component/search/SearchExpressionHandlerImpl.java (original)
+++ myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/component/search/SearchExpressionHandlerImpl.java Sat Dec 9 19:09:10 2017
@@ -428,6 +428,8 @@ public class SearchExpressionHandlerImpl
// Command completed, apply parent callback
this.applyKeyword(searchExpressionContext, previous, command, null, parentCallback);
}
+
+ return;
}
else
{
@@ -439,7 +441,7 @@ public class SearchExpressionHandlerImpl
{
int idx = topExpression.indexOf(":@");
nextExpression = topExpression.substring(idx+1);
- expression = topExpression.substring(0,idx);
+ expression = topExpression.substring(0, idx);
}
else
{
@@ -529,9 +531,14 @@ public class SearchExpressionHandlerImpl
return;
}
-
- topCallback.invokeContextCallback(facesContext, previous);
}
+
+ // still no component found - lets try a invokeComponent as last fallback (see MYFACES-4176)
+ String clientId = topExpression;
+ if (clientId.charAt(0) == separatorChar) {
+ clientId = clientId.substring(1);
+ }
+ facesContext.getViewRoot().invokeOnComponent(facesContext, clientId, topCallback);
}
// take the command and resolve it using the chain of responsibility pattern.
@@ -562,8 +569,6 @@ public class SearchExpressionHandlerImpl
char separatorChar = facesContext.getNamingContainerSeparatorChar();
if (topExpression.charAt(0) == separatorChar)
{
- //return facesContext.getApplication().getSearchExpressionHandler().isPassthroughExpression(
- // searchExpressionContext, topExpression.substring(1));
// only keywords are passthrough expressions.
return false;
}
Modified: myfaces/core/branches/2.3.x/impl/src/test/java/org/apache/myfaces/component/search/SearchExpressionImplTest.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/2.3.x/impl/src/test/java/org/apache/myfaces/component/search/SearchExpressionImplTest.java?rev=1817652&r1=1817651&r2=1817652&view=diff
==============================================================================
--- myfaces/core/branches/2.3.x/impl/src/test/java/org/apache/myfaces/component/search/SearchExpressionImplTest.java (original)
+++ myfaces/core/branches/2.3.x/impl/src/test/java/org/apache/myfaces/component/search/SearchExpressionImplTest.java Sat Dec 9 19:09:10 2017
@@ -117,6 +117,10 @@ public class SearchExpressionImplTest ex
componentId = facesContext.getApplication().getSearchExpressionHandler().resolveClientIds(
searchContext, "@parent:@id(msgName)").get(0);
Assert.assertEquals(componentId, "mainForm:msgName");
+
+ componentId = facesContext.getApplication().getSearchExpressionHandler().resolveClientIds(
+ searchContext, "topLevelOutputText").get(0);
+ Assert.assertEquals(componentId, "topLevelOutputText");
facesContext.getViewRoot().invokeOnComponent(facesContext, "mainForm:table:3:nested:1:nestedButton",
new ContextCallback()
Modified: myfaces/core/branches/2.3.x/impl/src/test/resources/org/apache/myfaces/component/search/search1.xhtml
URL: http://svn.apache.org/viewvc/myfaces/core/branches/2.3.x/impl/src/test/resources/org/apache/myfaces/component/search/search1.xhtml?rev=1817652&r1=1817651&r2=1817652&view=diff
==============================================================================
--- myfaces/core/branches/2.3.x/impl/src/test/resources/org/apache/myfaces/component/search/search1.xhtml (original)
+++ myfaces/core/branches/2.3.x/impl/src/test/resources/org/apache/myfaces/component/search/search1.xhtml Sat Dec 9 19:09:10 2017
@@ -25,6 +25,9 @@
<h:head>
</h:head>
<h:body>
+
+ <h:outputText id="topLevelOutputText" value="test" />
+
<h:panelGrid id="panelGridId" columns="1">
<h:form id="mainForm">