在纯粹的 JSF2.0应用程序中访问Manifest属性(来自/META-INF/Manifest.mf)的最佳方式是什么?JSF2中的显示清单属性
回答
THX到麦克道尔的上述建议,改进的init()
变为:
@PostConstruct
public void init() {
try {
InputStream is = FacesContext.getCurrentInstance().getExternalContext().getResourceAsStream("/META-INF/MANIFEST.MF");
manifest = new Manifest();
manifest.read(is);
} catch (IOException ioe) {
logger.error("Unable to read the Manifest file from classpath.", ioe);
}
}
以下似乎工作:
创建ManagedBean:
@ManagedBean(name = "cic")
@ApplicationScoped
public class ConfigurationInformationController {
private static final Logger logger = LoggerFactory.getLogger(ConfigurationInformationController.class.getName());
private Manifest manifest = null;
public Manifest getManifest() {
return manifest;
}
@PostConstruct
public void init() {
File manifestFile = null;
try {
String home = FacesContext.getCurrentInstance().getExternalContext().getRealPath("/");
manifestFile = new File(home, "META-INF/MANIFEST.MF");
manifest = new Manifest();
manifest.read(new FileInputStream(manifestFile));
} catch (IOException ioe) {
logger.error("Unable to read the Manifest file from '"+manifestFile.getAbsolutePath()+"'",ioe);
}
}
}
在Facelets的页面,从那里调用属性...
<h:outputLabel for="Build-BuildTimestamp" value="Build Timestamp:"/>
<h:outputText id="Build-BuildTimestamp" value="#{cic.manifest.mainAttributes.getValue('Build-BuildTimestamp')}"/>
幸运的是它的工作原理。虽然,通过File对象的往返感觉有点脆弱。有更好的建议吗? – Jan 2010-08-03 13:01:07
您不能指望MANIFEST.MF文件被解压缩。它应该可以通过类路径作为资源进行访问。 – 2010-08-03 13:35:21
使用'ExternalContext.getResource *'而不是'File'。 http://download.oracle.com/javaee/5/api/javax/faces/context/ExternalContext.html @ThorbjørnRavn Andersen - 如果你使用'ClassLoader.getResource(...'你会得到哪个清单首先?可能会在WEB-INF/lib和应用程序服务器库中的每个JAR文件中出现。 – McDowell 2010-08-03 15:10:45
- 1. 清除浮动没有显示属性
- 2. 显示'TestExample.jar加载主类清单属性失败'
- 3. 的Android清单属性
- 4. 显示属性
- 5. Javascript对象属性清单
- 6. 清单属性列表
- 7. 复选框清单属性
- 8. 访问android:installLocation清单属性
- 9. 变化H:与JavaScript的inputText属性JSF2
- 10. JSF2忽略空的alt属性
- 11. C#属性多次显示表单的属性选择
- 12. 在Magento1.9中显示属性
- 13. Xamarin表单绑定属性不显示
- 14. dojo显示属性
- 15. WCF显示属性
- 16. DNN-显示产品清单
- 17. 外部属性文件与JSF2
- 18. 清单一类的VBA属性2003
- 19. 在单个列表中显示sharedpeeddata属性的multipe数组类型属性
- 20. 显示属性的问题
- 21. JSF2 + <托管属性><属性名称>
- 22. systemctl显示不显示几个属性
- 23. ListView中的详细属性不显示
- 24. 从title中显示JSON的属性(angularjs)
- 25. 在PropertyGrid中显示的过滤属性
- 26. 显示JSP页面中的ManagedBean属性
- 27. 只显示Rails中存在的属性
- 28. 显示表(Oracle)中的属性
- 29. 在python中显示对象的属性
- 30. 显示组件中的计算属性
当这样做时:InputStream为null – kwisatz 2015-11-24 11:41:23