struts2 freemarker当中引进java 常量java静态方法
1.首先在struts.sml中配置<constant name="struts.ognl.allowStaticMethodAccess" value="true" />
表示允许使用静态java方法。非常重要。
2.在freemarker中引进java常量的方法:
假如:
Test.java
package test;
public class Test{
private String userSex=MAN;
public static final String MAN="男";
public static final String WOMAN="女";
public static String m()
{
return "test";
}
public String getUserSex()
{
return userSex;
}
public void setUserSex(String userSex)
{
this.userSex = userSex;
}
}
接下来我们在freemarker中调用该类中的 静态常量 和静态方法
a.调用常量:
${stack.findValue("@com.wish.maml.freemarkerexample.model.User1@MAN")}
</br>
${stack.findValue("@com.wish.maml.freemarkerexample.model.User1@m()")}
就会出现想要的结果
注意:目前只是调用静态的
补充:这里目前调用方法必须有返回值不能为void方法,如果是static void方法,那么运行页面的时候会走这个方法,但是没有值,所以会出错,这时候最好用个
${stack.findValue("@com.wish.maml.freemarkerexample2.freemarkerexample2.S@haha('aaa')")!"no"}
判断不存在的时候 显示 no
附带源代码如下
java
public class S
{
public static String str = "nih";
private String name = "";
public static String say()
{
return "good";
}
public static void haha(String ha)
{
System.out.println(ha);
}
public String getName()
{
return name;
}
public void setName(String name)
{
this.name = name;
}
public static S getS()
{
S s = new S();
s.setName("中国");
return s;
}
}
ftl:
${stack.findValue("@com.wish.maml.freemarkerexample2.freemarkerexample2.S@str")}
${stack.findValue("@com.wish.maml.freemarkerexample2.freemarkerexample2.S@say()")}
${stack.findValue("@com.wish.maml.freemarkerexample2.freemarkerexample2.S@haha('aaa')")!"no"}
${stack.findValue("@com.wish.maml.freemarkerexample2.freemarkerexample2.S@getS().name")!"no"}