Action处理请求,转发回的页面显示空白问题

时间:2022-11-17 23:31:55

问题描述

出现问题的代码及执行信息如下三图。

Action文件:

Action处理请求,转发回的页面显示空白问题


html文件:

Action处理请求,转发回的页面显示空白问题


在Maven build... 的Goals框中输入 tomcat:run,执行。

执行信息如下:

Action处理请求,转发回的页面显示空白问题


到这里,去浏览器上输入http://localhost:8080/bos_management访问项目,能正常显示页面,但是在页面点击按钮,执行了standard_save方法后,页面显示的空白,不报错。


F12打开控制台查看信息

访问项目的时候:

Action处理请求,转发回的页面显示空白问题


standard_save.action转发执行完返回的时候:

Action处理请求,转发回的页面显示空白问题


原因是:在Action中,返回了success,那么页面就要转发(struts2的跳转类型默认是dispatcher)到standard.html。由于是在服务器端内进行的转发,相对路径发生了变化,standard.html里的引用文件,不能找到正确的文件位置。这两种时候的相对路径如上两图所示。


问题解决

方式一:

把struts2的跳转方式设置为重定向(type="redirect"),因为重定向,相当于从客户端再发送请求,不同于服务器端的内部转发,它的相对路径关系和从浏览器访问时的一置。


方式二:

把standard.html里的相对路径全部改为绝对路径

但也有两点要注意:

1、在Maven build...中运行 tomcat:run 默认执行的是tomcat6插件。而执行tomcat6插件,默认的访问路径是 http://localhost:8080/bos_management,带有项目名。那么要想正确运行,在standard.html的绝对路径上全部加上项目名。如下图。

Action处理请求,转发回的页面显示空白问题


2、先在pom文件中配置tomcat7插件,并设置访问路径<path>/</path>。再在Maven build...中运行 tomcat7:run 。而执行tomcat7插件,由于改了访问路径,那么在standard.html的绝对路径中不用加项目名。

配置tomcat7,并设置访问路径:

Action处理请求,转发回的页面显示空白问题


standard.html文件的绝对路径设置:

Action处理请求,转发回的页面显示空白问题


在Maven build... 的Goals框中输入 tomcat7:run,执行。执行信息如下,访问路径是 http://localhost:8080。

Action处理请求,转发回的页面显示空白问题


这个问题包含了 转发/重定向和相对路径的问题,以及pom配置tomcat插件的路径设置问题。

最后的解决方式是,方式二的第二点。

由此,避免相对路径的使用能少踩坑!!!