Struts2 – 如何正确设置结果路径
Struts2 – 如何正确设置结果路径
在这里,结果路径表示 Struts2 在执行 Action 类中的代码后将解析的 JSP 文件或其他视图文件的位置。 这些结果路径在Action
类顶部的@Result
注解的“位置”中提到。
一旦动作类完成执行,它将把控件传递给视图解析器。 视图解析器尝试查找需要渲染的视图文件的位置。 该解决方案主要可以通过两种方式提及:
1)将整个相对路径添加到“位置”属性
现在,在这里,一个简单的“/
”可以改变整个含义,所以要小心。
A)在位置属性中带有“/
”字符
@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 文件的位置解析为::
%PROJECT_PATH%/WEB-INF/jsp/success.jsp
B)位置属性中没有“/
”字符
@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文件的位置解析为:
%PROJECT_PATH%/WEB-INF/content/WEB-INF/jsp/index.jsp
原因:背后的原因是,开始时的“/
”在项目根处解析,而其余路径在项目根目录下解析。 但是,当不在开始时使用“/
”时,默认的根目录假定为“/WEB-INF/content
”文件夹,其余的路径与此相对。 因此,当您下次注意时,请在@Result
注解中指定location
属性。
2)将资源根路径定义为常量“struts.convention.result.path
”
您可以在此常量中定义资源的固定部分,即 JSP 文件,然后只需指定 jsp 文件的名称即可,而不必担心其在项目中的位置。 另一个优点是,您以后可以将视图文件移动到其他文件夹中,甚至重命名文件夹名称,而不必担心其影响。 您只需要更改此常数中的路径。
可以在struts.xml
中将该常量定义为:
<struts>
<constant name="struts.convention.result.path" value="/WEB-INF/jsp/" />
</struts>
在struts.properties
文件中为:
struts.convention.result.path=/WEB-INF/jsp/
指定此常量后,在Action
类中,我们只需要指定 JSP 文件名即可。
@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
”的第二种方法。
评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果