Struts2中如何使用velocity工具箱?
How to use velocity toolbox in Struts 2?
我使用 velocity1.6.4、velocity-tools1.4 和 struts2.3.15.2
在struts.xml
中:
<constant name="struts.velocity.toolboxlocation" value="/WEB-INF/toolbox.xml" />
在toolbox.xml
:
<?xml version="1.0"?>
<toolbox>
<tool>
<key>date</key>
<scope>application</scope>
<class>
org.apache.velocity.tools.generic.ComparisonDateTool
</class>
<parameter name="format" value="yyyy-MM-dd" />
<parameter name="depth" value="2" />
<parameter name="skip" value="month" />
</tool>
<tool>
<key>controlUtil</key>
<scope>application</scope>
<class>com.quangao.bible.webapp.util.ControlUtil</class>
</tool>
</toolbox>
ControlUtil.java
是
public class ControlUtil {
public static List<Keyword> getKeywords(ServletContext servletContext) {
System.out.println("------");
KeywordManager keywordManager = (KeywordManager) getBean(
servletContext, "keywordManager");
try {
List<Keyword> value = keywordManager.getKeywords();
System.out.println(value);
if (value != null && value.size() > 5) {
return value.subList(0, 5);
} else {
return value;
}
} catch (Exception e) {
return null;
}
}
}
在index.vm
中,我尝试在ControlUtil
中使用方法getKeywords()
#set($keyWords=$controlUtil.getKeywords($session.servletContext))
不是字,方法getKeywords()
中System.out.println("------");
的正确方法应该打印,但不是
为什么我无法从 vm 文件中访问 ControlUtil
中的方法 getKeywords()
,请帮助我!
没有任何理由通过参数传递 servlet 上下文。您可以简化代码
#set ($keyWords = $controlUtil.keywords)
但工具应该初始化 servletContext
属性
public class ControlUtil {
private ServletContext servletContext;
public void setServletContext(ServletContext servletContext) {
this.servletContext = servletContext;
}
public static List<Keyword> getKeywords() {
System.out.println("------");
KeywordManager keywordManager = (KeywordManager) getBean(
servletContext, "keywordManager");
try {
List<Keyword> value = keywordManager.getKeywords();
System.out.println(value);
if (value != null && value.size() > 5) {
return value.subList(0, 5);
} else {
return value;
}
} catch (Exception e) {
return null;
}
}
}
我使用 velocity1.6.4、velocity-tools1.4 和 struts2.3.15.2
在struts.xml
中:
<constant name="struts.velocity.toolboxlocation" value="/WEB-INF/toolbox.xml" />
在toolbox.xml
:
<?xml version="1.0"?>
<toolbox>
<tool>
<key>date</key>
<scope>application</scope>
<class>
org.apache.velocity.tools.generic.ComparisonDateTool
</class>
<parameter name="format" value="yyyy-MM-dd" />
<parameter name="depth" value="2" />
<parameter name="skip" value="month" />
</tool>
<tool>
<key>controlUtil</key>
<scope>application</scope>
<class>com.quangao.bible.webapp.util.ControlUtil</class>
</tool>
</toolbox>
ControlUtil.java
是
public class ControlUtil {
public static List<Keyword> getKeywords(ServletContext servletContext) {
System.out.println("------");
KeywordManager keywordManager = (KeywordManager) getBean(
servletContext, "keywordManager");
try {
List<Keyword> value = keywordManager.getKeywords();
System.out.println(value);
if (value != null && value.size() > 5) {
return value.subList(0, 5);
} else {
return value;
}
} catch (Exception e) {
return null;
}
}
}
在index.vm
中,我尝试在ControlUtil
getKeywords()
#set($keyWords=$controlUtil.getKeywords($session.servletContext))
不是字,方法getKeywords()
中System.out.println("------");
的正确方法应该打印,但不是
为什么我无法从 vm 文件中访问 ControlUtil
中的方法 getKeywords()
,请帮助我!
没有任何理由通过参数传递 servlet 上下文。您可以简化代码
#set ($keyWords = $controlUtil.keywords)
但工具应该初始化 servletContext
属性
public class ControlUtil {
private ServletContext servletContext;
public void setServletContext(ServletContext servletContext) {
this.servletContext = servletContext;
}
public static List<Keyword> getKeywords() {
System.out.println("------");
KeywordManager keywordManager = (KeywordManager) getBean(
servletContext, "keywordManager");
try {
List<Keyword> value = keywordManager.getKeywords();
System.out.println(value);
if (value != null && value.size() > 5) {
return value.subList(0, 5);
} else {
return value;
}
} catch (Exception e) {
return null;
}
}
}