许多新手调用静态属性和方法时,都会有静态方法没有值问题:
其原因有3种可能:
1:版本太低问题。
2:写静态属性和方法时没有写上public。
3:自己写的包.类名字有问题。(可以用ctrl看看能否成功跳转)
下面我对于第二种可能举个例子:
①class里面写:
package Class;
public class StaticTest {
/*
* 注意jsp里面调用静态时候要写上public,若不写则无法调用。
*
*/
public static String aString = "asd";
public static String tet() {
return "asdzxc";
}
public static void test() {
System.out.println("静态方法");
}
static String aString2 = "asd";
static String tet2() {
return "asdzxc";
}
static void test2() {
System.out.println("静态方法");
}
}
②jsp里面写的是:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
<title>登录成功</title>
</head>
<body>
<s:debug/>
访问静态属性和方法。<br>
<!-- 默认情况下,不允许ognl输出静态方法,需要在struts.xml里面手动开启(属性和方法都要有public) -->
PI= <s:property value="@@PI"/><br>
max(5,10)= <s:property value="@@max(5,10)"/><br>
<hr color="red">
自定义的静态属性和方法有public时:<br>
自定义的静态属性:<s:property value="@Class.StaticTest@aString"/><br>
自定义的静态方法:<s:property value="@Class.StaticTest@tet()"/><br>
自定义的静态方法:在后置控制台显示内容<s:property value="@Class.StaticTest@test()"/><br>
<hr color="red">
自定义的静态属性和方法没有public时:(结果:没有成功调用)<br>
自定义的静态属性:<s:property value="@Class.StaticTest@aString2"/><br>
自定义的静态方法:<s:property value="@Class.StaticTest@tet2()"/><br>
自定义的静态方法:在后置控制台显示内容<s:property value="@Class.StaticTest@test2()"/><br>
<hr color="red">
</body>
</html>