Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.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
Redirect Struts2:动态链接重定向?_Redirect_Struts2 - Fatal编程技术网

Redirect Struts2:动态链接重定向?

Redirect Struts2:动态链接重定向?,redirect,struts2,Redirect,Struts2,我是Struts的新手, 我使用一个java类生成一个算法,一个我存储在本地的HTML文件。 如果操作成功,是否可以在“我的操作”中创建重定向到临时文件的链接? 这是我的action.java类: String databases; String sequence; String algoUsed; String maxTarget; String wordSize; String name; String sequenceFasta; boolean lowComplexity; pri

我是Struts的新手, 我使用一个java类生成一个算法,一个我存储在本地的HTML文件。 如果操作成功,是否可以在“我的操作”中创建重定向到临时文件的链接? 这是我的action.java类:

String databases;
String sequence;
String algoUsed;
String maxTarget;
String wordSize;
String name;

String sequenceFasta;
boolean lowComplexity;


private String url;

public String getUrl()
    {
    return url;
    }


public String getAlgoUsed() {
    return algoUsed;
}

public void setAlgoUsed(String algoUsed) {
    this.algoUsed = algoUsed;
}


public String getDatabases() {
    return databases;
}

public void setDatabases(String databases) {
    this.databases = databases;
}

 public String getWordSize() {
    return wordSize;
}

public void setWordSize(String wordSize) {
    this.wordSize = wordSize;
}

public boolean isLowComplexity() {
    return lowComplexity;
}

public void setLowComplexity(boolean lowComplexity) {
    this.lowComplexity = lowComplexity;
}

public String getMaxTarget() {
    return maxTarget;
}

public void setMaxTarget(String maxTarget) {
    this.maxTarget = maxTarget;
}

public String getSequence() {
    return sequence;
}

public void setSequence(String sequence) {
    this.sequence = sequence;
}

File blast = new File("C:\\dmif-blast\\web\\blast.xml");
File directory = new File("C:\\dmif-blast\\web\\blast\\");
public String commandBlastN() throws Exception{
    try {

         blast.delete();

  File blasthtml = File.createTempFile("blast_", ".html",directory);



            ProcessBuilder pb = new ProcessBuilder(
                    this.blastAllPath,
                    "-task", "blastn",
                    "-db", blastDB,
                    "-query", fasta.getAbsolutePath(),
                     "-outfmt", "5",
                    "-word_size", wordSize,
                    "-num_alignments", maxTarget,
                    "-num_descriptions", maxTarget,
                    "-out", blast.getAbsolutePath());


            Process proc = pb.start();
           System.out.println(pb.command());


            if (proc.waitFor() != 0) {
                throw new RuntimeException("error occured");
            }


    } catch (Exception err) {
        throw new RuntimeException(err);

    }


              InputStream in = new FileInputStream(blast);
               FileOutputStream out = new FileOutputStream(blasthtml);
              out.write(BlastXML2HTML.toHTML(in).getBytes());
              out.close();

                   System.out.println("success......");

                url = blasthtml.getCanonicalPath();


               return SUCCESS;

  }
}

还有我的stuts.xml

 <action name="blastn" class="com.ncbi.blast.beanAction.ncbiBlastNAction" method="commandBlastN">
       <interceptor-ref name="token"/>
       <interceptor-ref name="defaultStack"/>
       <interceptor-ref name="execAndWait"/>
        <result name="wait">wait.jsp</result>
       <result name="error">blastn.jsp</result>
         <result name="invalid.token">blastn.jsp</result>
          <result name="success" >${url}</result>
    </action>
谢谢你的帮助

编辑: 感谢Tommi提供的解决方案,但它不起作用,现在我有一个新错误:

Stacktraces java.lang.RuntimeException: java.io.IOException: The system cannot find the path specified com.ncbi.blast.beanAction.ncbiBlastNAction.commandBlastN(ncbiBlastNAction.java:168) sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) java.lang.reflect.Method.invoke(Method.java:597) com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:441) com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:280) org.apache.struts2.interceptor.BackgroundProcess$1.run(BackgroundProcess.java:57) java.lang.Thread.run(Thread.java:619)

java.io.IOException: The system cannot find the path specified java.io.WinNTFileSystem.createFileExclusively(Native Method) java.io.File.checkAndCreate(File.java:1704) java.io.File.createTempFile(File.java:1792) com.ncbi.blast.beanAction.ncbiBlastNAction.commandBlastN(ncbiBlastNAction.java:95) sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) java.lang.reflect.Method.invoke(Method.java:597) com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:441) com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:280) org.apache.struts2.interceptor.BackgroundProcess$1.run(BackgroundProcess.java:57) java.lang.Thread.run(Thread.java:619)

尝试这样定义结果:

<result name="redirect" type="redirect">${url}</result>
private String url;

public String getUrl() {
   return url;
}

public String commandBlastN() {
   // create your HTML file
   url = "/web/blast/blast_xxxx.html";
   return "redirect";
}
private String url;

public String getUrl() {
   return url;
}

public String commandBlastN() {
   // create your HTML file
   url = "/web/blast/blast_xxxx.html";
   return "redirect";
}