1

在 JSF 托管 bean 中,我从过去的问题中获取了以下代码:

String uri = "/myAction";
FacesContext.getCurrentInstance().getExternalContext().dispatch(uri);

myAction是在 my 中定义的 Struts 动作的名称struts.xml

但是,当我访问 JSF bean 时,我没有被转发到/myAction. 相反,我收到 404 http 错误:The requested resource (/MyApp/myAction) is not available.

为什么它不起作用?

当我尝试/myAction直接从浏览器访问时,http://localhost:8080/MyApp/myAction一切正常。

4

2 回答 2

0

设置 Struts 2 过滤器web.xml以接受转发(和直接请求(或重定向)):

在你的web.xml,改变:

<filter-mapping>
    <filter-name>struts2</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

至:

<filter-mapping>
    <filter-name>struts2</filter-name>
    <url-pattern>/*</url-pattern>

    <dispatcher>FORWARD</dispatcher>
    <dispatcher>REQUEST</dispatcher>
    <!-- uncomment if you plan to include struts action output -->
    <!--
    <dispatcher>INCLUDE</dispatcher>
    -->
</filter-mapping>

信用:

http://www.coderanch.com/t/59584/Struts/request-dispatcher-struts-action

http://docs.oracle.com/cd/B32110_01/web.1013/b28959/filters.htm#BCFIEDGB

于 2013-04-18T13:59:52.720 回答
0

线索在该dispatch方法的 javadoc 中:

“参数:path -指定资源的上下文相对路径,必须以斜杠(“/”)字符开头”

即,它发送到相对于您的应用程序上下文的 url,而不是您的网络服务器根文件夹

您需要的是redirect重定向到绝对 url 的方法。

于 2013-04-17T20:20:18.303 回答