在wildfly swarm中加载jsf字符串

时间:2016-07-22 11:34:50

标签: jboss wildfly wildfly-swarm

我试图在wildfly swarm上运行一个jsf应用程序,但我在资源管理方面遇到了一些麻烦。他们在their github页面上的简短示例说明:

  

您需要以诸如此类的方式将xhtml文件添加到Shrinkwrap   deployment.addAsWebResource(),因为JSF是非静态的。

我没有设法识别我的捆绑文件。此外,我有大约20个.properties文件,其中包含字符串。我真的需要以编程方式添加所有这些吗?

<f:loadBundle basename="strings.strings"> Can't find bundle for base name strings.strings, locale en_US

在我的主要方法中,我有:

    deployment.addAsWebResource(
            new ClassLoaderAsset("strings/strings.properties", Main.class.getClassLoader()), "strings.strings");

2 个答案:

答案 0 :(得分:2)

您链接到的JSF示例使用Shrinkwrap来自定义容器和部署。

如果您不需要自定义任何内容,它可以像https://github.com/wildfly-swarm/wildfly-swarm-examples/tree/master/jsf/jsf-war

一样自动获取资源

答案 1 :(得分:0)

我有同样的问题,我的资源文件夹中的包。当我将它注入bean并从网页执行操作时,它会查找并显示消息,但是当需要的字段为空时,所有操作都会失败并且我会收到消息

java.util.MissingResourceException: Can't find bundle for base name messages, locale en
    at java.util.ResourceBundle.throwMissingResourceException(ResourceBundle.java:1564)
    at java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:1387)
    at java.util.ResourceBundle.getBundle(ResourceBundle.java:1082)
    at javax.faces.component.MessageFactory.getMessage(MessageFactory.java:161)
    at javax.faces.component.MessageFactory.getMessage(MessageFactory.java:251)
    at javax.faces.component.UIInput.validateValue(UIInput.java:1149)
    at javax.faces.component.UIInput.validate(UIInput.java:982)



 @ManagedProperty("#{i18n}")
        private ResourceBundle bundle = null;

   public String loginUser() {
        FacesContext context = FacesContext.getCurrentInstance();
        ExternalContext ex = context.getExternalContext();       

        FacesMessage msg = new FacesMessage(bundle.getString("nouser"), bundle.getString("nouser"));
        FacesContext.getCurrentInstance().addMessage(null, msg);
        return