JEECMS-自定义标签[list]

时间:2023-03-09 13:07:12
JEECMS-自定义标签[list]

1.自定义标签类

import static cn.com.yhxl.common.web.freemarker.DirectiveUtils.OUT_LIST;
import static freemarker.template.ObjectWrapper.DEFAULT_WRAPPER; import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map; import org.springframework.beans.factory.annotation.Autowired; import cn.com.yhxl.jhahi.entity.pm.PmShopArticle;
import cn.com.yhxl.jhahi.entity.pm.PmShopChannel;
import cn.com.yhxl.jhahi.service.pm.IPmShopArticleService;
import cn.com.yhxl.jhahi.service.pm.IPmShopChannelService;
import freemarker.core.Environment;
import freemarker.template.TemplateDirectiveBody;
import freemarker.template.TemplateDirectiveModel;
import freemarker.template.TemplateException;
import freemarker.template.TemplateModel; /**
* 内容列表标签
*/
public class ArticleListDirective implements TemplateDirectiveModel {
/**
* 模板名称
*/
public static final String TPL_NAME = "content_list";
/**
* 栏目id
*/
public static final String PARAM_CHANNEL_ID = "channelId";
/**
* 是否包含子栏目文章0:自身栏目;1:包含子栏目;
*/
public static final String PARAM_CHANNEL_OPTION = "channelOption"; private List<PmShopChannel> list = new ArrayList<>(); @SuppressWarnings({ "unchecked", "deprecation" })
public void execute(Environment env, Map params, TemplateModel[] loopVars,
TemplateDirectiveBody body) throws TemplateException, IOException {
// CmsSite site = FrontUtils.getSite(env);
List<PmShopArticle> list = getList(params, env); Map<String, TemplateModel> paramWrap = new HashMap<String, TemplateModel>(
params);
paramWrap.put(OUT_LIST, DEFAULT_WRAPPER.wrap(list));
Map<String, TemplateModel> origMap = DirectiveUtils
.addParamsToVariable(env, paramWrap);
if (body != null) {
body.render(env.getOut());
}
DirectiveUtils.removeParamsFromVariable(env, paramWrap, origMap);
} protected List<PmShopArticle> getList(Map<String, TemplateModel> params,
Environment env) throws TemplateException {
Long channelId = DirectiveUtils.getLong(PARAM_CHANNEL_ID, params);
Integer channelOption = DirectiveUtils.getInt(PARAM_CHANNEL_OPTION,
params);
if (channelId == null) {
return null;
}
if (channelOption == null) {
channelOption = 0;
}
if (channelOption != null && channelOption == 0) {
if (channelId != null) {
return articleService.getListByChannelId(channelId, null);
}
}else if(channelOption != null && channelOption == 1){
PmShopChannel parentChannel = channelService.findById(channelId);
List<PmShopChannel> list = this.getAllChannelList(channelId);
list.add(parentChannel);
return articleService.getAllChildByChannelId(list);
}
return null;
} private List<PmShopChannel> getAllChannelList(Long parentChannelId){
List<PmShopChannel> childList = channelService.getChilds(parentChannelId);
if (childList!=null&&childList.size()>0) {
list.addAll(childList);
if (childList!=null&&childList.size()>0) {
for (PmShopChannel channel : childList) {
// list.add(channel);
this.getAllChannelList(channel.getScId());
}
}
}
return this.list;
} @Autowired
private IPmShopArticleService articleService;
@Autowired
private IPmShopChannelService channelService; }

2.修改相关配置文件

aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAVcAAAD3CAIAAAAmOIAVAAAa4klEQVR4nO2dXWgcR4LH5+UIGMyRENmsQbAJgsVZg0VkjNIPkdGLYjCILH6zIRhCc8IxHH4ZP6xZ7YONLd9d2rvSxtm7i+XTRp5zLBGH3QGFrHUheFiIEY6RYdhBnG2tiaPTGhMn8mhmpLqH6o+qruqv+egP1f9HIUY9VdU9o65fV/dM/5UjirO5TkoDcye6aCGlgaQ3CIC4ySW9AQCAhIEFAFAdWAAA1YEFAFAdWAAA1YEFAFAdWAAA1VHLAl9d2G+X8K2Kei6nF+1fK4aW04yK+9eKoeUYzAZFnVnGtBJXYT1J++GrOk/za/HuEIDwZNUCm5ubgUtczLzX4/OrH8wYFUep9WTF0FhXSJq6bOJRrWJoOV3XuRHOW8CjDwCaJJMWuHz5cj6fr9fr9pJ6vZ7P5ycnJ72afHVmf/XxperjS0/LxuM75+7/z6nyp//81Zn9bPFcH3f0L+o5XdftoVgxNPpUsAV8RrDbAkV+wgELgE6SPQs0Go18Pn/gwAFbBFQBdEmj0ZC2+uLM69Wnf/EpX5x53XudzNgr6uYYpb/LHrEIw1u+Akm1iqGx5xWwAOgY2bMAIaRWq9nDfm1tzSUFKV/86vXq4099ykfv/NRnjfbgK+rWEKXDsmjPCvgzdmukNnddwPGKvVbZdQFcFgBtIZMWIMzx/9ChQ4EKKA8Oi2Xm5F6vIunCHPbs/F8zKsGHeu6SgnNhwJaD+aRHP5YHMBcAnSSrFiD8iYCPAggh5cHh5fzo6uTVpSP66uTV5fxoeXC4ev9S9f6lt9/oFousD+tMwBqs7t/DWMD1m7wa3w/1gA4LgA6SYQsQQur1+pUrV2q1mn+18uDw6uRVQshj4wNCyOrk1fLgcLV8rlo+d7Bv1+H+3sP9vbXaAn1wcN8uaSf0qiB3YOd+jzQX8Knm7sc8B4AFQMfItgVCUh4cXjqiUwU8Nj5YOqKXB4erd0ard0YH9uyg49/++eaeHfJeinqOG8Su313fF3Cm+pKrBbK+vc8sKoYGC4AOorIFTlXvnOrreYkOfloO9/fu63kx6e0FIFZUsYB4RvCR/rOP9J/t7t7umgu81r096e0FIFZUsQB7dfDbc0Z5cJg+9crOba7rAq/u3Jbs1gIQM6pYQCz0qe6XXxBLslsLQMwoYQEAgA+wAACqAwsAoDqwAACqAwsAoDqwAACqAwukE8/7jgBoO4paIDCezEVzgYUtAAuA+FDRAnfv3p2fn9/Y2AhZv/nAwuaBBUB8KGeBzc3N+fn56enpkCJoKbCweWABEB/KWYAQsrGxEV4ErQUWEvbeYjE0zH2fslOtqOc0w9CFekJvALSMihYgUUTQWmBhUXcP14qhi8nkYjUmvMCJIw4ZaAxANBS1ACGkVqtdv359enp6cXHRp9off/V69f6kXXzSCiWBhR7zevdsQFLNNeCt+QEPpgOgLShqgfBzgZmTP6+WDVpmTu6laYVhAwvF4S3NDQpvAYx70AFUtECk6wIfv9dDEwpnTu6lD6IEFrJJg0VDDC1mzgi4alIL8LmFRR0nBKA9KGeBqJ8RfPROd/XOqZmTe2lOoV3CBhY6s3/mnwzQ+byuuzLHmWpSC3hdWQSgJZSzAIn4fYH3f/GTmZN7aUghWxBYCLYMKlqARPzuIE0odBUEFoItg6IWaB0EFoItAyzQJAgsBFsGWAAA1YEFAFAdWAAA1YEFAFAdWAAA1YEFAFAdWCBmijq++wtShqIWSC53EBYAqUNFCySaOwgLgNShnAWSzh2EBUDqUM4CJOHcQcYCstuExWWyWpL0QdxzDJpGRQuQJHMHbQvIAgjFMEFJvKAsfRAphKAFFLUASSx3kDsjEA7g9CDPthGWyNMHxYYAhEVRC7SeO+gqj++ci2YBaQChCZUD25JZ4pc+KDYEIBgVLdCW3EG2yBVAiEegoDtx1AkgrBgGc82ATvXdS6Tpg5JqAIRFOQu0K3fQLt4KIIRIAwX9Agid+b4tD2FJwAVDOABERDkLkDblDtISoAAAsoCKFiDtyB20S+c2EoB4UNQCAAAbWAAA1YEFAFAdWAAA1YEFAFAdWAAA1YEFAFAdWAAA1YEFAFAdRS2QXO4gAKlDRQskmjsIQOpQzgJJ5w4CkDqUswBJOHeQ8GlB7J3BmlE0bxnWi04tppV/Bd+eDbEyACYqWoAknDvILHESQ4q6PUbpWHZSCCJU8OzZqQwPADeKWoCEyx0sDw6LpaXcQfcSNkFIY9JIxcdBFUL1XDE0WAC4UdQCIecC5cHh5fzo6uTVpSP66uTV5fxoeXCYBg2SzXXy8N3FC120kNJAsxYIN8ibsYDYEBYAElS0QPjTgfLg8OrkVULIY+MDQsjq5NXy4DDNGiSb64sXumqr90iphxS65k50yTqQ5g7y83bzl5YtEKpnWABIUM4CkT4jKA8OLx3RqQIeGx8sHdHLg8M0bjCcBcTcQeJ3Da8lC4TpGRYAEpSzAInyfQEPC5yq3jkV1gIApB4VLUBCf3dQekZgxg3CAmCroKgFQuK6OvjtOaM8OGw+BwuArQIs4If0k0Lzuc11UhqYO9FFCykNJLmhALQALACA6sACAKgOLACA6sACAKgOLACA6sACAKgOLJByzG8g6wZuCgadAhYIRVK5g056AKIBQMdQzgLid4cDv02cYO6geGsyAG1HLQtcvnw5n8/X63V7Sb1ez+fzk5OTXk2SzR2EBUAMKGSBRqORz+cPHDhgi4AqgC5pNBrSVrHmDvLpgEw9veicG7DPaIYBT4BWUcgChJBarWYP+7W1NZcUpMSaOyhcAnDmAny+oOWDiqEhURS0iloWIMzx/9ChQ4EKIIT88VevV+9P2sUndLB9uYNOFojEAq4ecM4AWkY5CxD+RMBfAYSQmZM/r5YNWmZO7qWhg9X7l95+o1ss7sZN5g7CAiBWVLQAIaRer1+5cqVWqwXW/Pi9Hho0OHNyL31Ay8G+XYf7ew/399ZqC/TBwX27hNbN5Q76WgBnBKDdKGqB8Hz0Tnf1zqmZk3tp3KBdBvbsoOPf/vnmnh2S9s3kDvpbgO0TVwdBG4AFAnj/Fz+ZObmXZg2ypa/nJTr4aTnc37uv58UEtg9nBKBlYIFgaNCgq+zu3u6aC7zWvT2WzakYGjetgARAi8ACTfLKzm2u6wKv7twW07qdMwIoALQBWKBJul9+QSxJbxQAzQALAKA6sAAAqgMLAKA6sAAAqgMLAKA6sAAAqgMLZIui7nzpGID2AAtEI+Q/O7Zpd2AhLADaDywQgbt3787Pz29sbISs34HAQlgAtB9YICybm5vz8/PT09MhRdCZwEJYALQfWCACGxsb4UXQWmAhvZHYuQfZDikwLeC+0RiRhKB5YIFohBdBa4GF9IYhZuw7ESM+FkAACWgGWCAytVrt+vXr09PTi4uLPtVaCizkj+983pi3BRBGBpoCFohG+LmAV2Ah2VwnD99dvNBFCykNwAIgWWCBCES6LuAVWEg21xcvdNVW75FSDyl0zZ3okrWuGJprci+eETBZZDgjAC0AC4Ql6mcEXoGF4S2g68LFQeYzAjtqRNN1RBKCVoAFIhDp+wJegYURLNDiR4I4IwDhgAWiEem7g9LAwk5aAJGEoBlggdjp6FwAkYQgOrBA7Gyuk9LA3IkuWkhpIOkNAqoDCwCgOrAAAKoDCwCgOrAAAKoDCwCgOrAAAKoDC2SFkN8EbDqGpB3fVgTZBBboLO3LHYQFQKeABcIifnc48NvEbc0dhAVAp4AFQnH58uV8Pl+v1+0l9Xo9n89PTk56NWl37iAsADoFLBBMo9HI5/MHDhywRUAVQJc0Gg1pq1ZyB53wAGIP/6JObxZmbjVmQwisaAHTAowzmNABZ6mTaGhV80o6BFsfWCAUtVrNHvZra2suKUhpKXeQH8RWkJA1NJmIEVYRFaY6m0WoaRp90qrFTivsil5Jh2DrAwuExT7+Hzp0KFABpNXcQXug2jN819C1H9OjN/srF0lW1DWjUtQ1o2K3co737HTAK+MMbH1ggQiwJwL+CiDeuYNvv9EtFrE5HbLMWIxoAbMOM/6LhmtKIKwQFlAUWCAa9Xr9ypUrtVotsKZX7uDBvl2H+3sP9/fWagv0wcF9uyTtK4am6To32iUWoEv5UwQnkkzTnOm+fV7gmu4Xdec0Q5Z0CLY+sECn8ModHNizg45/++ebe3ZIe+DTgiQWYCrYw5b5jIAdyhXugiMbRsIlGUuSDsHWBxboFF65g309L9HBT8vh/t59PS9Ke0BuIIgHWKCDSHMHd3dvd80FXuveLmmME3MQF7BA3Lyyc5vrusCrO7e56tArfnAAiAdYIG66X35BLElvFFAaWAAA1YEFkqHe34+C0ukScm+EBZIh8f0DRYXy6BkJU2CBZEh8/0BRocACqcb+O9lLQv7BUFACCyyQDQItMF88Jy2J72Eo6S+wQDYItMAXfxpbrzVcZfGzkegiKB7NaaPfhKmmTyW9+2anpPrtggWyQaAF5j77F9ECf/3zL+9FFgEs0Ini8XY9KEydHpo4PTRxeujGgrhw5OYDpvLC2IS5fOzrZ6T8+Yj1q9CDZyndOD009fkyt3BhzN67vg7XFhZIhkAL/OnT96vrDVqer9er643n6437f3n/r3/+5eJn/1T89N+i7K9b1QKV0f25o7OdbhL+7SrdsIfuwhgd2+6FFwvlZ8JjsTwoTJnNvcryzYtDE6fHbkzzFlgYm7hYCDMXoNKBBZIk0AKfzvzmx2r9x2p991vHj//6wx+fN47/+sPdbx3/sdpYqzY+m/1NlP0VFmilSfi3q3TDGbqlG/TIz4325ZsX6XTAfiAvX0+HmQiYNRkLmN0GW+BBYepi4eY0LJAogRb45L9/92yt/mytdvbSJ7vfOv79Wn33W8fPXvrk2Vr92Vp95pMJ6V93dH+u73zF/HVWz+03blELnLduGT5WfPSM3Dqv5aydeOoYXehjgeJR635jq3NnSc5pRQdY8Wgul9tv3JI3bLpz7lX0na9w1TxWJ7xMXWhCvN8NbXTW6Mvlcrnc0VnyaJZdtZcFSPnzEXNMLoxNTJfMB5wFhm4sOIOQzvzFKb3fNMHHAla3QRYwN+NrWCBZAi3w8dUPn/5Qf/pD/ekPNTr+d791/OkPNbqkULgk/wObI9/coY/OWmPjWPHRM/LoG6PPmhdMHcv1na8w9b0sUDzqHsP8klndGkKV0f3CuP2GFUQrnUtfBdutfHXCy5RviezdsExBx7+zant75Bawz+rNwfmgMMWdJgzdWGAemBXYeYFliiYsYHVr713S6YbdBBZImEALXJ76j79/X6OFKuDspU/+/v06XfJff/h3j93CHgz2buoaHvZjeuRkf2XGm/0UoxVRNPyQ4wfYrDvdkD+AR+1c+iqYNcpXJ75MPx/x74b/Y5kFuPHsukYwNHF6aOJi4ea0eJogHM8Drgj4WuBiocx8RjD1+TLdEufaJLNqWCBhAi3w+8nJlafrtFAFSAMLxd3i1nmt73zl1nnNPHxFtgBfQg1U8cgsa9hS5yEsIF9dfBYofz5ingWI4/OZrYaxr5+ZU3epBWStQlvA6pa3AFufXlPky8UCLJAMgRaY+M8/fPtk/dsn63Qi8O2TqjSwULJnfGP07deP7pfuxI4F6Bz41nktzBmBPesetY7nwtUHcYCxDcnUsRY7D7KAx+qEl8k0Ec6P+HejfXMByYhdvnmRPWVgW/ldNQywgNWt/xmB2BYWSIZACxi/v/q31eqj1XX6GcHfVtelgYXSv+7UMfbql2T8MBUqo/uDrg5+Y14k48/5va4OSht6X5YP27ncZbfOa86lPmF1spfJNLEs4PFuRLfAM/YrALYCnMMvf2S2J+qubxZEOB0QLGB2G/JbQ7BAwgRa4F8/uPZwpfpwpfpgpfrw/6oPV55LAwu9LOB9TR5l6xd8dzAbBFrg3O+u/+93z2m5/93z+989lwYWSv6oznVsFEULLJANAi1wdnz27G9nz/x29uz47Jnx2bPjs9LAQlerqWO+028UNQoskA2auLNYGliY+A6HksICC2QD5AugdK7AAtmgvZEyKCjSAgukmsT3DxQVSsi9ERZIhsT3DxQVSsi9ERYAQHVggZTilTuY9HaBLQgskFJ8cgcj9hTyXx8z//K8I3Sy//D/3dn1H9zbTqf7l9CGNxYWSCn+uYNReoIFGNSxwEqhYN2nMHdPXDhye8WpCwuklMDcwdA9ZcICrf2f9vAW6AjJ/pN56RtbmrMH/72xidNjS+LC8cITYj6GBVJKYO5g6J5ggU6TTgvQkU8fj9xe4Uc+Wb49TqcDy7fHR2CBlBKYOyhtxc1HzbFR1HOaYVhRPHqR0N3W2nWKOn3oOUorhpZjG1uNzMwgc3V0JBT1XC6n6TqzGdYcme3f1dz5VT6YZVvAtXIaFvWcZhTN+ubLYp93Biz3tng6JGjVzDuby2lGhRMCu4XsQs/1evxdfF+Rxx/uyZcjhS+XCSHk3tjEtZL5gLPA0Nw9QlYKhXGkjKSVwNxBeTPmqGjtHUXd3gmZs1ZWERW2ugvJcY498tpP0+Fi1XSq2BXs/j2bexxOK4ZuVbdGBvvI/MV5FdZjOlqcF+5aj/xtCblqvjaz8Xz/nJHDrVf2d/F9Rd4WsJMOTB2sFArcacLQ3D3zASyQUgJzBz3a2buP16jT2P2a2VHZ+uzBxlXNfQy2nnMNY2ul4s4a3Ny1AeZ2cwdV1ykAN2bYVyQ8ds0F3G9L9FVbVdwWcFeTPsH+OdgX4/q7+D+WWWClUHCu/7muEQxNnB6aGC/cvuacJsACKUXMHSSb6+Thu4sXumghpQFpQ7pnMTtmVAt49Zpz5u+SA6f7YE5rMetjLBCiuWvNkolFRywQfdWujfezgD1oO26BJ1+OmGcBhBBClq5Z0wEH68IBzgjSjJg7SDbXFy901VbvkVIPKXTNneiSt6wYmqbrmnTXcXY7e5QGnhEYRbutczRnZuPuGar3Zkgn8x7NbZjNZ06b2U7YwdpWCwSvumi4JjI+ZwSSLbTWK5ypiadunq8o0lzAgvHC8u1xnBGkFTF3MKwFvHdAe7djKti7t+dcwJnC289LrpmJw5i91EW4/mWX3MxlHtMEc5qu65LzBnqxrRMW8Fq1s5gZ+7koVwc9LODxd4luAcJM/h0FLN8e568UmJRggZQi5g5GskCSH5yBrAELpBQxdzDCGUGCn16DDAILpBQxdzCMBdjPkgAICSyQHTbXSWlg7kQXLV6fEQAQFVgAANWBBQBQHVgAANWBBQBQHVgAANWBBVIKcgdBbMACKQW5gwzmN3RT9D2I9CSLtQNYIKUgd9AmjV+GTI8FouQLMjcXjC0xGQSwQEpB7iDbsh0DrnWZpDNZLEK+IJM1xAELpBTkDrItYQFvC0TIF+TmBQywQEpB7qC7ak4vcmthArmkd+9y2X5+q/B6kcLdy0wP2cwXvH1NemcxLJBWkDsoWx+/FjFIwS/br5loQ370Zj5f0FzIZZAQQpZhgZSC3EFZfhC/Fkmql0+2X2vRhq61ZzNf0L4owGWQrSBxLK0gd9DVlaSaZAT6ZPu1Fm3oWns28wWlFli6hs8I0gpyB208LSDOxn2y/VqKNtwi+YLMKQPbCv+VJK0gd5DdAA8LcFsXkO3XRLThlssXnJN/swD/oSytIHcQxAYskFKQOwhiAxZIKcgdBLEBC2QH5A6CzgALAKA6sAAAqgMLAKA6sAAAqgMLAKA6sEBKQe4giA1YIKVkNndwy39pqV1vVIqABVJKZnMHVbVAO/L/hDsCfCjNCWEhrm7Dt4UFUkpmcwfjsUATa2nXhknfqPbk/xFi3t7jO4bpzUJjc677iP27ZaDSgQUyQGZzB5W1QBvy/wghS9fCTATMmsxIDujWwYoegwUyQEpyB/kEMzG4xLmpVhJAmPO/qUFs632LbkCIoLsr4QXq0tzBtOX/hT+eEyEvyK9bB3MzlmCBTJCS3EE2TUPTXDE6rlvoPQII5R7gMxDEJU5D6fa74sPEzRBfoHwuIHsfEsv/M00RDm4k+3UraQILZIO05A5ae39R14xKUdeMit1JcIIgcSUUcYdz12lK0yGC8s0QX6DXGUGK8v+CrghwuC0g6daOFXGvmmlbmsN/JUktqckdpE2Y8V+UJetx9aUW4AllgXAhgp7XPeKzQLvy/7xn8hLEMwK5XEycACKnWE1ggZSSltxB2kZzpvv2eYFPgiCf2eV5RsCn+jUdIijdDPEFulID05j/F+rynqRPn27DtIUF0kp6cge5oeyK1vcKIHQuxnlfHBRS/ZoPERQ2Q/YCXamBacz/C386QCQHfFm34drCAikFuYMgNmCBlILcQRAbsEBKQe4giA1YIDsgdxB0BlgAANWBBeKm3t+PghJz8d8nYYG4SXyHQFGw+O+TsEDcJL5DoChY/PdJWCBuQv5hAGgdWCClwAIgNmCBlBLmD5PL5f7hhRf8Sy4X8m+3JVNGWsb1VegtCiyQUkJa4B9HCv4FFmiJFi2QkZRBe2fzvFvx3tgE7iyOH1ggOdq1bZlJGQyyQGluvPAEc4H4CWmBMIRbISxg00YLZCNlMHguQAiBBeInpAUC+5HWyULuoFcFZrnQOdONT/++G6Np9t3H1s3FkjuauUwSr1eQnZRBWCClhLeAfcCXzgLkpshA7qBXBX65ZwyhV/MQG+MOGvFuGDRpyErKICyQUjo6F0hx7qDXEm7EOss9Ywg9mkfdGDEPkWvoenN4spMyKFiAr0MIIeTJlyOwQNw0PRd4+41usYhtU5872LQFxKwxwlkg0sZIw01lzUUXZChl0N7Z2JRBV7cT10qwQNw0PRc42LfrcH/v4f7eWm2BPji4b5ekcTpzB/kQcVkwoWvEesWmeTX33JgAC0gbVgyjKDSxyU7KYMAZgTUfgQXipum5wMCeHXT82z/f3LND2jyNuYO8BWTBhOJ48746KM019NoYpk8+epBzias7n8ubhGQmZTDAAtargAXipum5QF/PS3Tw03K4v3dfz4vS5unOHWzx47o0fxKZOvDdwZTSxDeI6TFpd/d211zgte7tksZpHyawQHzAAiml6buJXtm5zXVd4NWd21x1spA7CAvEByyQUuK/txwFxX+fhAXiJvEdAkXB4r9PwgJxk/gOgaJg8d8nYQEAVAcWAEB1YAEAVAcW6CzzxXPSkvR2AeDw/zkV2tfPXzTqAAAAAElFTkSuQmCC" alt="" />

3.

yhxl-core-context.xml添加如下内容:

<bean id="article_list" class="cn.com.yhxl.common.web.freemarker.ArticleListDirective"/>

yhxl-web.properties添加如下内容:

directive.article_list=article_list