OGNL其他技术
- 调用对象普通方法
直接调用即可:<s:property value="#request.t5.test1()" /> - 调用类的静态方法和静态属性
@class@method(args) //调用静态方法
@class@field //调用静态字段
注意:- 其中class必须给出完整的类名(包括包名),如果省略class,那么默认使用的类是java.util.Math,如:
@@min(5,3) @@max(5,3) @@PI
-
- 需要修改struts.xml配置,增加:
<constant name="struts.ognl.allowStaticMethodAccess" value="true" /> |
增加测试类Test5.java:
package com.bjsxt.struts.test; public class Test5 { public static int age=15; public void test1(){ System.out.println("调用对象普通方法!"); } public String test2(){ System.out.println("调用对象普通方法!并有返回值"); return "ttt222"; } public static String test3(){ System.out.println("调用类的静态方法!"); return "ccc"; } } |
在struts.xml中增加配置:
<constant name="struts.ognl.allowStaticMethodAccess" value="true" /> |
ok.jsp中代码:
<%@ page language="java" import="java.util.*,com.bjsxt.struts.test.*" pageEncoding="gbk"%> <%@ taglib prefix="s" uri="/struts-tags" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>测试OGNL</title> </head> <body> <% Test5 t = new Test5(); request.setAttribute("t5",t); %> <s:property value="#request.t5.test1()" /> <br/> <s:set var="s1" value="#request.t5.test2()" scope="request" ></s:set> 获得普通方法调用后的返回值:<s:property value="#request.s1" /> <br/> <s:set var="s2" value="@com.bjsxt.struts.test.Test5@test3()" scope="request" ></s:set> <s:property value="#request.s2" /><br/> <s:property value="@@PI" /><br/>
</body> </html> |
执行结果: