OGNL 作为struts2的一个表达式,这里只介绍它的运算符
用途,一个string的字符串 String a=“1+1”,如何计算出 a=2 呢,很多开源jar包都可以做到这一点,自己写个代码也可以实现,这里,用ognl运算符来实现,看代码:
package test;
import ognl.Ognl;
import ognl.OgnlException;
public class COgnlTest<Variable> {
public static void main(String[] args) throws ScriptException, OgnlException{
//这样是不行的
// String a="1+1";
// System.out.println(Long.valueOf(a));
//这样也是不行的
Object whoExp = Ognl.parseExpression("1+1");
System.out.println(whoExp);
String dep=null;
Object output = Ognl.getValue("1+1", dep);
// String a="1l";
// String b="1l";
// Object output = Ognl.getValue("#a==#b", dep);
System.out.println("output:"+output);
}
}
分享到:
相关推荐
7. **类型转换**:`(String) myValue` - 将`myValue`强制转换为字符串类型。 在实际项目中,开发者经常利用OGNL的强大功能来实现复杂的逻辑,比如动态计算、条件判断、集合操作等。但是,由于OGNL允许任意的Java...
- 自动转换:OGNL会自动尝试将字符串转换为适当的数据类型。 - 双向数据绑定:在JSP中,`<s:textfield name="user.name" />`会自动绑定到Action的`user`属性的`name`字段。 4. **Struts2 OGNL标签** - `...
OGNL允许我们直接通过字符串表达式来访问和修改对象的属性。例如,如果我们有一个用户对象`user`,并想获取其`name`属性,我们可以使用`user.name`这样的表达式。OGNL还支持方法调用、集合操作、运算符等,使得它在...
5. **条件表达式**:OGNL支持三元运算符,如`(condition) ? valueIfTrue : valueIfFalse`。 6. **数组和列表初始化**:可以使用花括号`{}`来初始化数组或列表,如`new String[]{"a", "b", "c"}`。 7. **Map操作**:...
Java的`+`运算符可以用于字符串连接,`String.format`方法则用于格式化输出。 5. **条件语句和循环**:在处理表达式时,我们可能需要根据条件改变计算路径,如`if`语句和`switch`语句。循环结构(`for`,`while`,`...
4. **编译器技术**:在Java中,我们可以使用`javacompiler` API或者第三方库如JEXL (Java Expression Language) 或者Ognl (Object-Graph Navigation Language) 来编译和执行字符串表达式。这些工具能够将字符串公式...
- 字符串连接:`string1 ~ string2`,相当于`string1 + string2`。 3. **上下文(Context)**: OGNL表达式执行时会有一个上下文,其中包含变量和对象。在Struts2中,这个上下文包含了Action实例、请求、会话和...
2,使用+运算符时,如果一边是数字,一边是字符串,就会自动将数字转换为字符串再连接,如:${3 + "5"},结果是:35 使用内建的int函数可对数值取整,如: ${ (x/2)?int } ${ 1.1?int } ${ 1.999?int } ${ -1.1?int } ...
它的主要功能是提供简洁的语法来访问对象属性、执行循环和条件判断,以及进行字符串格式化等。MVEL模板允许开发者以一种声明式的方式将动态数据嵌入到静态文本中,常用于生成HTML或者其他格式的输出。 **基本对象...
{3.4}正则表达式}{71}{section.3.4} {3.5}StringBuffer}{75}{section.3.5} {3.6}StringBuilder}{76}{section.3.6} {3.7}StringBuilder与StringBuffer的缺点}{76}{section.3.7} {3.8}内部类}{77}{section.3.8} ...