ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# Struts2 – 如何正确设置结果路径 > 原文: [https://howtodoinjava.com/struts2/how-to-correctly-set-result-path-in-struts-2/](https://howtodoinjava.com/struts2/how-to-correctly-set-result-path-in-struts-2/) 在这里,结果路径表示 Struts2 在执行 Action 类中的代码后将解析的 JSP 文件或其他视图文件的位置。 这些**结果路径在`Action`类顶部的`@Result`注解**的“位置”中提到。 一旦动作类完成执行,它将把控件传递给视图解析器。 视图解析器尝试查找需要渲染的视图文件的位置。 该解决方案主要可以通过两种方式提及: ## 1)将整个相对路径添加到“位置”属性 现在,在这里,一个简单的“`/`”可以改变整个含义,所以要小心。 **A)在位置属性中带有“`/`”字符** ```java @Namespace("/default") @Results({ @Result(name="success", location="/WEB-INF/jsp/success.jsp"), @Result(name="input", location="/WEB-INF/jsp/index.jsp") }) public class TestAction extends ActionSupport { //More code... } ``` 上面的定义会将 jsp 文件的位置解析为:: ```java %PROJECT_PATH%/WEB-INF/jsp/success.jsp ``` **B)位置属性中没有“`/`”字符** ```java @Namespace("/default") @Results({ @Result(name="success", location="WEB-INF/jsp/success.jsp"), @Result(name="input", location="WEB-INF/jsp/index.jsp") }) public class TestAction extends ActionSupport { //More code... } ``` 上面的定义会将jsp文件的位置解析为: ```java %PROJECT_PATH%/WEB-INF/content/WEB-INF/jsp/index.jsp ``` **原因**:背后的原因是,开始时的“`/`”在项目根处解析,而其余路径在项目根目录下解析。 但是,**当不在开始时使用“`/`”时,默认的根目录假定为“`/WEB-INF/content`”文件夹**,其余的路径与此相对。 因此,当您下次注意时,请在`@Result`注解中指定`location`属性。 ## 2)将资源根路径定义为常量“`struts.convention.result.path`” 您可以在此常量中定义资源的固定部分,即 JSP 文件,然后只需指定 jsp 文件的名称即可,而不必担心其在项目中的位置。 **另一个优点是,您以后可以将视图文件移动到其他文件夹中**,甚至**重命名文件夹名称**,而不必担心其影响。 您只需要更改此常数中的路径。 可以在`struts.xml`中将该常量定义为: ```java <struts> <constant name="struts.convention.result.path" value="/WEB-INF/jsp/" /> </struts> ``` 在`struts.properties`文件中为: ```java struts.convention.result.path=/WEB-INF/jsp/ ``` 指定此常量后,在`Action`类中,我们只需要指定 JSP 文件名即可。 ```java @Namespace("/default") @Results({ @Result(name="success", location="success.jsp"), @Result(name="input", location="index.jsp") }) public class TestAction extends ActionSupport { //More code... } ``` 推荐使用涉及常量“`struts.convention.result.path`”的第二种方法。 **祝您学习愉快!**