package org.apache.struts2.util; import com.opensymphony.xwork2.util.ValueStack; import org.apache.struts2.views.util.ContextUtil; /** * Various static methods used with components */ public class ComponentUtils { /** * If altSyntax (%{...}) is applied, simply strip the "%{" and "}" off. * * @param stack the ValueStack where the context value is searched for. * @param expr the expression (must be not null) * @return the stripped expression if altSyntax is enabled. Otherwise * the parameter expression is returned as is. */ public static String stripExpressionIfAltSyntax(ValueStack stack, String expr) { if (altSyntax(stack)) { // does the expression start with %{ and end with }? if so, just cut it off! if (isExpression(expr)) { return expr.substring(2, expr.length() - 1); } } return expr; } /** * Is the altSyntax enabled? [TRUE] * * @param stack the ValueStack where the context value is searched for. * @return true if altSyntax is activated. False otherwise. * See <code>struts.properties</code> where the altSyntax flag is defined. */ public static boolean altSyntax(ValueStack stack) { return ContextUtil.isUseAltSyntax(stack.getContext()); } /** * Check if object is expression base on altSyntax * * @param value to treat as an expression * @return true if it is an expression */ public static boolean isExpression(Object value) { String expr = value.toString(); return expr.startsWith("%{") && expr.endsWith("}"); } }