java中重新加载指定文件_java – 重新加载使用setBundle加载的属性文件

你可能会尝试一些事情.

< FMT:setBundle>最终将调用ResourceBundle.getBundle(String,Locale,ClassLoader),其中字符串将是您的基本名称,类加载器将是Thread.currentThread().getContextClassLoader().如果您使用的是JDK 1.6,则可以尝试使用ResourceBundle.clearCache(ClassLoader)清除捆绑缓存.在servlet过滤器中执行此操作并将其与其他逻辑组合以确定何时应清除缓存是有意义的.

另一个角度是更直接地控制属性文件的加载和JSTL的配置.再次,使用过滤器(忽略异常处理):

ClassLoader ctxLoader = Thread.currentThread().getContextClassLoader();

URL propsURL = ctxLoader.getResource("opto-mapping.properties");

URLConnection propsConn = propsURL.openConnection();

long propsLastModified = propsConn.getLastModified();

// decide if you want to reload...

propsConn.setUseCaches(false);

InputStream propsIn = propsConn.getInputStream();

ResourceBundle propsBundle = new PropertyResourceBundle(propsIn);

propsIn.close();

LocalizationContext propsCtx = new LocalizationContext(propsBundle);

ServletContext servletCtx = this.filterConfig.getServletContext();

Config.set(servletCtx,Config.FMT_LOCALIZATION_CONTEXT,propsCtx);

然后你可以使用< fmt:message>在你的页面中.您可以在JSTL API中找到LocalizationContext和Config的文档.

许多其他变体是可能的,但请务必查看JDK 1.6中新增的ResourceBundle(包括ResourceBundle.Control),记住URLConnection等“低级”API的功能,并熟悉更多JSTL的程序化方面可通过其API获得.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值