You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@struts.apache.org by ku...@apache.org on 2024/01/08 09:47:40 UTC
(struts) branch WW-5379-directives-valuestack created (now c5cf3fc28)
This is an automated email from the ASF dual-hosted git repository.
kusal pushed a change to branch WW-5379-directives-valuestack
in repository https://gitbox.apache.org/repos/asf/struts.git
at c5cf3fc28 WW-5379 Add one more method to provide Velocity directives with ValueStack
This branch includes the following new commits:
new c5cf3fc28 WW-5379 Add one more method to provide Velocity directives with ValueStack
The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
(struts) 01/01: WW-5379 Add one more method to provide Velocity directives with ValueStack
Posted by ku...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
kusal pushed a commit to branch WW-5379-directives-valuestack
in repository https://gitbox.apache.org/repos/asf/struts.git
commit c5cf3fc28824f33ed2020464e0d9b7e1ea86fb82
Author: Kusal Kithul-Godage <gi...@kusal.io>
AuthorDate: Mon Jan 8 20:47:35 2024 +1100
WW-5379 Add one more method to provide Velocity directives with ValueStack
---
.../views/velocity/components/AbstractDirective.java | 20 +++++++++++++++-----
1 file changed, 15 insertions(+), 5 deletions(-)
diff --git a/plugins/velocity/src/main/java/org/apache/struts2/views/velocity/components/AbstractDirective.java b/plugins/velocity/src/main/java/org/apache/struts2/views/velocity/components/AbstractDirective.java
index 539f64bdd..c662bf5a9 100644
--- a/plugins/velocity/src/main/java/org/apache/struts2/views/velocity/components/AbstractDirective.java
+++ b/plugins/velocity/src/main/java/org/apache/struts2/views/velocity/components/AbstractDirective.java
@@ -18,6 +18,7 @@
*/
package org.apache.struts2.views.velocity.components;
+import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.inject.Container;
import com.opensymphony.xwork2.util.ValueStack;
import org.apache.struts2.ServletActionContext;
@@ -59,11 +60,7 @@ public abstract class AbstractDirective extends Directive {
protected abstract Component getBean(ValueStack stack, HttpServletRequest req, HttpServletResponse res);
public boolean render(InternalContextAdapter ctx, Writer writer, Node node) throws IOException, ResourceNotFoundException, ParseErrorException, MethodInvocationException {
- ValueStack stack = extractValueStack(ctx);
- if (stack == null) {
- // Fallback to assuming the ValueStack was put into the Velocity context (as is by default)
- stack = (ValueStack) ctx.get(ContextUtil.STACK);
- }
+ ValueStack stack = getValueStack(ctx);
HttpServletRequest req = (HttpServletRequest) stack.getContext().get(ServletActionContext.HTTP_REQUEST);
HttpServletResponse res = (HttpServletResponse) stack.getContext().get(ServletActionContext.HTTP_RESPONSE);
Component bean = getBean(stack, req, res);
@@ -84,6 +81,19 @@ public abstract class AbstractDirective extends Directive {
return true;
}
+ protected ValueStack getValueStack(Context context) {
+ ValueStack stack = extractValueStack(context);
+ if (stack == null) {
+ // Fallback to assuming the ValueStack was put into the Velocity context (as is by default)
+ stack = (ValueStack) context.get(ContextUtil.STACK);
+ }
+ if (stack == null) {
+ // Fallback to current ActionContext
+ stack = ActionContext.getContext().getValueStack();
+ }
+ return stack;
+ }
+
private ValueStack extractValueStack(Context context) {
do {
if (context instanceof ValueStackProvider) {