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"}

posted @ 2010-10-18 10:35    阅读(761)  评论(0编辑  收藏  举报