Java 是否可以在操作中使用VariableResolver? 概述
我有一个加载到侦听器上的属性文件,其中包含两个变量上的一些EL表达式:Java 是否可以在操作中使用VariableResolver? 概述,java,jsp,struts2,el,Java,Jsp,Struts2,El,我有一个加载到侦听器上的属性文件,其中包含两个变量上的一些EL表达式: foo.path=${pageContext.request.contextPath}/foo bar.path=${application.realPath}/bar 我能够加载这个属性并解析它们所使用的JSP页面上的EL表达式,但是我也需要一个操作来解析它们。 我无法将这些属性放在操作上,因为该应用程序经过自定义,可以通过在系统知道的文件夹中提供属性文件来覆盖这些属性 到目前为止我做了什么 1。用于分析属性的Evalu
foo.path=${pageContext.request.contextPath}/foo
bar.path=${application.realPath}/bar
我能够加载这个属性并解析它们所使用的JSP页面上的EL表达式,但是我也需要一个操作来解析它们。
我无法将这些属性放在操作上,因为该应用程序经过自定义,可以通过在系统知道的文件夹中提供属性文件来覆盖这些属性
到目前为止我做了什么
1。用于分析属性的Evaluator类
public class MyExpressionEvaluator
{
private PageContext pageContext;
public MyExpressionEvaluator(PageContext pageContext)
{
this.pageContext = pageContext;
}
public <T extends Object> T evaluate(String expression, Class<T> clazz)
{
T value = null;
ExpressionEvaluator evaluator = pageContext.getExpressionEvaluator();
VariableResolver variableResolver = pageContext.getVariableResolver();
try
{
value = clazz.cast(evaluator.evaluate(expression, clazz,
variableResolver, null));
}
catch (ELException e)
{
log.error("Error while evaluating expression", e);
}
return value;
}
}
公共类MyExpressionEvaluator
{
私有页面上下文页面上下文;
公共MyExpressionEvaluator(PageContext PageContext)
{
this.pageContext=pageContext;
}
公共T求值(字符串表达式,类clazz)
{
T值=null;
ExpressionEvaluator=pageContext.getExpressionEvaluator();
VariableResolver VariableResolver=pageContext.getVariableResolver();
尝试
{
value=clazz.cast(evaluator.evaluate)(表达式,clazz,
variablesolver,null));
}
捕捉(电子例外e)
{
log.error(“计算表达式时出错”,e);
}
返回值;
}
}
2。在jsp脚本上调用函数:
private String buildConfigObject(Configuration conf, PageContext pageContext) {
// Helper function which retrieves a JSON from properties
StringBuilder configValue = parseConfig(conf);
MyExpressionEvaluator evaluator = new MyExpressionEvaluator(pageContext);
value = evaluator.evaluate(configValue.toString(), String.class);
return (value != null) ? value : configValue.toString();
}
<script type="text/javascript">
var generatedContent = <%= buildConfigObject(conf, pageContext)%>;
</script>
私有字符串buildConfigObject(配置配置,页面上下文,页面上下文){
//从属性检索JSON的Helper函数
StringBuilder configValue=parseConfig(conf);
MyExpressionEvaluator=新的MyExpressionEvaluator(页面上下文);
value=evaluator.evaluate(configValue.toString(),String.class);
返回值(value!=null)?值:configValue.toString();
}
var generatedContent=;
我不知道如何继续进行该操作,因为在这一点上我无法访问pageContext 版本
- JSP:2.0
- ServletAPI:3.0
- JSTL:1.2.0
- 支柱:2.1.6