liferay中使用Velocity进行themes设定,下面来分析一下它的应用过程
1.我们先看看VelocityVariables.java这个类,它定义了4个方法
public static void insertHelperUtilities(VelocityContext vc, String[] restrictedVariables)({...}
这个方法主要在Journal中使用,主要是将一些util的变量加入至Velocity中
public static void insertVariables(
VelocityContext vc, HttpServletRequest req) {...}
此方法使用的最多,用来定义所有变量,分别在VelocityFilter.java,RuntimePortletUtil.java和 ThemeUtil.java中使用
private static void _insertHelperUtility(
VelocityContext vc, String[] restrictedVariables, String key,
Object value) {...}
在insertHelperUtilities方法中使用的内部方法
private static String _insertTilesVariables(
VelocityContext vc, HttpServletRequest req, String attributeId,
String attributeName) {...}
在insertVariables方法中使用的内部方法,定义Tiles attributes变量的方法
2.再来看看webapps/ROOT/html/themes/_unstyled/templates/init.vm文件
#set ($theme_display = $themeDisplay)
#set ($portlet_display = $portletDisplay)
......
定义变量,分别将VelocityVariables中定义的变量值取出供其他vm文件使用
1.我们先看看VelocityVariables.java这个类,它定义了4个方法
public static void insertHelperUtilities(VelocityContext vc, String[] restrictedVariables)({...}
这个方法主要在Journal中使用,主要是将一些util的变量加入至Velocity中
public static void insertVariables(
VelocityContext vc, HttpServletRequest req) {...}
此方法使用的最多,用来定义所有变量,分别在VelocityFilter.java,RuntimePortletUtil.java和 ThemeUtil.java中使用
private static void _insertHelperUtility(
VelocityContext vc, String[] restrictedVariables, String key,
Object value) {...}
在insertHelperUtilities方法中使用的内部方法
private static String _insertTilesVariables(
VelocityContext vc, HttpServletRequest req, String attributeId,
String attributeName) {...}
在insertVariables方法中使用的内部方法,定义Tiles attributes变量的方法
2.再来看看webapps/ROOT/html/themes/_unstyled/templates/init.vm文件
#set ($theme_display = $themeDisplay)
#set ($portlet_display = $portletDisplay)
......
定义变量,分别将VelocityVariables中定义的变量值取出供其他vm文件使用