Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Struts2从struts.xml文件执行一个操作的多个结果_Java_Xml_Jsp_Struts2 - Fatal编程技术网

Java Struts2从struts.xml文件执行一个操作的多个结果

Java Struts2从struts.xml文件执行一个操作的多个结果,java,xml,jsp,struts2,Java,Xml,Jsp,Struts2,我想从struts.xml文件中运行两个操作结果,只需单击表单上的提交按钮。这可能吗?如果可能,如何实现?下面我举一个简短的例子: 点击表单上的“我的提交”按钮后,struts2中是否仍有运行操作结果成功\u csv并使用结果成功重新加载页面 我在我的index.jsp上有一个表单,例如: <form id="example" name="example" action="makecsv" > <!-- form sutff --> <input class="s

我想从struts.xml文件中运行两个操作结果,只需单击表单上的提交按钮。这可能吗?如果可能,如何实现?下面我举一个简短的例子:

点击表单上的“我的提交”按钮后,struts2中是否仍有运行操作结果成功\u csv并使用结果成功重新加载页面

我在我的index.jsp上有一个表单,例如:

<form id="example" name="example" action="makecsv" >
<!-- form sutff --> 
<input class="submit" type="submit" value="Submit" >
</form>

现在它只提供了csv文件,我希望它也能打开index.jsp

在jsp中使用listentopics和notifyTopic

有关listentopics和notifyTopic语法,请访问以下链接


将listentopic添加到表单中,在下载文件链接上说“filecomplete”,写下notifytopic“triggerFilecomplete”,这将触发表单提交。

在考虑Struts2之前,从浏览器的角度问自己,从更高的层次上看,您希望发生什么-回想一下浏览器发出请求,它只需要响应(html页面或som其他内容)

如果您想要请求返回html结果页,然后(自动)开始下载的行为,请阅读(注意,顺便说一句,总是有两个请求。)

只有在这一步之后,当您决定了要实现什么时,才考虑如何实现它——也就是说,考虑如何使用Struts实现它

例如,我认为您的“first”操作生成稍后下载的文件,将其保存在临时位置(连同一些安全id),并返回html页面作为结果。该页面包含对新请求的引用(通过元刷新、javascript、iframe或其他方式——可能还有一个带有典型“如果几秒钟内没有开始下载,请单击此处”的显式链接),以hte文件的id作为参数。
此请求命中第二个操作,该操作接收文件id,并将其作为二进制结果返回。

您不能流式传输图像,同时显示HTML页面


我能想出的一个解决方案是使用javascript在新窗口中打开图像。

不,您不能对一个HTTP请求提交两个响应。gnanz提供的解决方案可能适合您。
<action name="makecsv" class="com.example.actions.MakecsvAction">

<result name="success_csv" type="stream">

            <param name="contentType">image/jpeg</param>
            <param name="inputName">fileStream</param>
            <param name="contentDisposition">attachment;filename="${filename}"</param>
            <param name="bufferSize">1024</param>

</result>
<result name="success"> index.jsp </result>
</action>
public class RegisterAction extends ActionSupport   
{
public String execute() throws Exception 
{
     //blahblah code that creates csv file 
     //sets the filename and fileStream of the file

     return "succes_csv";
}
}