看了struts的actionservlet文件的源码 protected void initModuleMessageResources(ModuleConfig config)
throws ServletException { MessageResourcesConfig mrcs[] = config.findMessageResourcesConfigs();
for (int i = 0; i < mrcs.length; i++) {
if ((mrcs[i].getFactory() == null)
|| (mrcs[i].getParameter() == null)) {
continue;
}
if (log.isDebugEnabled()) {
log.debug(
"Initializing module path '"
+ config.getPrefix()
+ "' message resources from '"
+ mrcs[i].getParameter()
+ "'");
} String factory = mrcs[i].getFactory();
MessageResourcesFactory.setFactoryClass(factory);
MessageResourcesFactory factoryObject =
MessageResourcesFactory.createFactory();
factoryObject.setConfig(mrcs[i]); MessageResources resources =
factoryObject.createResources(mrcs[i].getParameter());
resources.setReturnNull(mrcs[i].getNull());
resources.setEscape(mrcs[i].isEscape());
getServletContext().setAttribute(
mrcs[i].getKey() + config.getPrefix(),
resources);
} }
是不是要改写这个文件?
throws ServletException { MessageResourcesConfig mrcs[] = config.findMessageResourcesConfigs();
for (int i = 0; i < mrcs.length; i++) {
if ((mrcs[i].getFactory() == null)
|| (mrcs[i].getParameter() == null)) {
continue;
}
if (log.isDebugEnabled()) {
log.debug(
"Initializing module path '"
+ config.getPrefix()
+ "' message resources from '"
+ mrcs[i].getParameter()
+ "'");
} String factory = mrcs[i].getFactory();
MessageResourcesFactory.setFactoryClass(factory);
MessageResourcesFactory factoryObject =
MessageResourcesFactory.createFactory();
factoryObject.setConfig(mrcs[i]); MessageResources resources =
factoryObject.createResources(mrcs[i].getParameter());
resources.setReturnNull(mrcs[i].getNull());
resources.setEscape(mrcs[i].isEscape());
getServletContext().setAttribute(
mrcs[i].getKey() + config.getPrefix(),
resources);
} }
是不是要改写这个文件?
解决方案 »
- jquery查询后台数据库,如何显示到当前页面
- 关于jsp中获取错误码的问题request.getAttribute("javax.servlet.error.status_code")
- 求关注,求爱心,异步刷新。
- struts的迭代器不能输出信息
- 【S2SH】涉及外键的页面下拉表框值如何锁定。
- spring配置DataSource使用jndi,总是不成功。 With Weblogic
- 初学 spring + hibernate ,头大了,有几个小问题帮忙,谢谢大家
- 写了一个javabean的小例子 但运行不起来 各位高手帮忙看看吧
- 用j2ee开发erp建议
- jbuilder 8 的注册机?
- 为什么相同的WSDL在jbuilderX上解析通过, 在JBuild2006与Eclipse上就不行呢?
- oracle数据缓存的问题
InputStream is = null;
is = getClass().getResourceAsStream("ApplicationResources_zh_CN.properties");
base.load(is);
然后通过base.getProperty("#####")就可以读取资源文件了
不知道是不是你想要的
现在已经实现了,我现在在后台动态添加一个资源文件,点一下鼠标就可以立马使用了得益于struts源码
import java.util.Properties;
import java.io.File;
import java.io.FileInputStream;
public class JPropertiesSetting { public static void main(String args[]) {
new JPropertiesSetting();
} /**
* 属性文件名
*/
// public static final String PFILE =
// "D:/TWorkspace/jmessage/classes/config.properties"; private static final String PFILE =
"/opt/alert/jmessage/classes/config.properties"; /**
* 对应属性文件对象变量
*/
private File m_file = null; /**
* 属性文件的最后修改时间
*/
private long m_lastModifiedTime = 0; /**
* 属性文件对应的属性对象变量
*/
private Properties m_props = null; /**
* 本类可能存在的唯一个实例
*/
private static JPropertiesSetting m_instance = new JPropertiesSetting(); /**
* 私有构造函数.
*/
private JPropertiesSetting() {
this.m_file = new File(PFILE);
this.m_lastModifiedTime = this.m_file.lastModified();
if (this.m_lastModifiedTime == 0) {
System.out.println(PFILE + " file not found ");
}
this.m_props = new Properties();
try {
m_props.load(new FileInputStream(PFILE));
}
catch (Exception e) {
e.printStackTrace();
} } /**
* 静态工厂方法
* @return ConfigManager 单例模式提供
*/
synchronized public static JPropertiesSetting getInstance() {
return m_instance;
} /**
* 读取指定的属性项
* @param pStrName String 属性的名称
* @param pObjDefaultValue Object 默认值
* @return Object
*/
final public Object getItemValue(String pStrItemName,
Object pObjDefaultValue) {
long newTime = this.m_file.lastModified();
//检查属性文件是否被更新过.如果被更新过那么重新获取最新版本.
if (newTime == 0) {
if (this.m_lastModifiedTime == 0) {
System.out.println(PFILE + " file does not exist !");
}
else {
System.out.println(PFILE + " file was deleted !");
}
return pObjDefaultValue; }
else if (newTime > this.m_lastModifiedTime) {
this.m_props.clear();
try {
m_props.load(new FileInputStream(PFILE));
}
catch (Exception e) {
e.printStackTrace();
} }
this.m_lastModifiedTime = newTime;
Object val = this.m_props.getProperty(pStrItemName);
if (val == null) {
return pObjDefaultValue;
}
else {
return val;
} } /**
* 读取指定的属性项
* @param pItemName String
* @param value String
*/
final public Object getItemValue(String pItemName) { return this.getItemValue(pItemName, null);
} /**
* 设置配置项名称及其值
* @param pItemName String
* @param value String
*/
final public void setItemValue(String pItemName, String value) {
this.m_props.setProperty(pItemName, value);
return;
}}
是不是只能运行一次阿,在什么地方循环?
看了struts源码以后,我 已经实现了,哈哈
比如你在ApplicationResources_zh_CN.properties中新加了一个aaa=test只要一刷新,就可以在jsp中立马使用<bean:message key="aaa"/>了多看源码,很有帮助