1

我正在 JSF 中完成一个项目,但现在我必须重新创建所有链接(例如localhost:8080/project/recoverpasswordwww.project.com/recoverpassword例如和许多其他链接。所以我想知道是否有任何其他方法可以更简单地做到这一点?

另一件事是我正在使用Windows 7开发平台,这个项目将被部署在Linux(可能是 CentOS 6)paths中,对于链接、图像、视频等来说,它们是完全不同的,当然是指本地内容(我认为将这些文件托管在应用程序运行的地方之外会很昂贵),因为文件系统不同,这会导致即使在 JPA 中的实体中引用的表名称中的数据库也会出现问题。所以这里的教训是我必须开发我的项目,它将被部署在哪里?还是我错了?还有另一种解决此问题的方法吗?

谢谢。

4

3 回答 3

1

您应该始终拥有相同的开发、测试和生产环境。

否则,跟踪故障将成为一场噩梦,因为如果它们是由环境或您自己的软件引起的,您现在可能不会。

您可以做的一件事是设置复制目标环境的虚拟机。

于 2013-04-18T12:04:25.660 回答
1

我认为这/project是上下文路径。上下文路径确实是一个动态值,完全超出了您的 Web 应用程序项目的控制范围。

如果您从一开始就正确使用,则不需要重新创建所有链接:

必要时,提到的标签会自动添加当前上下文路径。换句话说,您永远不需要/project在代码中的任何位置对表示上下文路径的字符串进行硬编码。

自己振作起来,咬紧牙关,花一整天时间在当前项目中解决所有问题,并为未来的项目吸取教训。

也可以看看:

于 2013-04-18T12:33:38.967 回答
0

我前段时间遇到过你的问题。我自己的解决方案是创建一个Constants文件,将所有与系统相关的变量放入其中。例如,

public class Constants {
    // Local development
    private static final String PHOTO_FOLDER = "C:\path\to\photos\Windows";
    private static final String APP_PATH     = "localhost:8080/project/";

    // Online server
    private static final String PHOTO_FOLDER = "/path/to/photos/Linux";
    private static final String APP_PATH     = "www.project.com/";
}

上述类中的任何常量都可以在任何@ManagedBeanusing中访问Constants.PROPERTY。如果您想访问.xhtml页面内的常量,您可以创建一个.properties具有类似内容的文件:

// Local development
PHOTO_FOLDER = C:\path\to\photos\Windows
APP_PATH     = localhost:8080/project/

// Online server
PHOTO_FOLDER = /path/to/photos/Linux
APP_PATH     = www.project.com/

然后在您的文件中声明此.properties文件faces-config.xmlResourceBundle

<faces-config version="2.0"
    xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd">
    <application>

        <resource-bundle>
            <base-name>your_package.constants</base-name>
            <var>constants</var>
        </resource-bundle>

    </application>
</faces-config>

此时,您可以.xhtml使用#{constants.PROPERTY}.

取决于您在哪里部署应用程序,只需注释掉不必要的行 :)。

此外,当您处理文件名时,只需使用File.separator分隔文件夹就可以了:P。

我正在做的绝对不是最佳实践,但它是实现您想要的东西的一种非常简单的方法:P。BalusC 的答案应该是目前处理这些组件时的最佳实践。所以也许混合动力车应该很酷?:)

于 2013-04-18T14:12:46.400 回答