您好,我想在服务器上上传多个文件,例如一个 Excel 文件和两个 xml 文件,但没有为操作定义结果,并且正在显示结果输入错误。我使用的是struts2框架。
我的 Jsp 页面-
<form action ="myInput" enctype="multipart/form-data" method="post" >
<input type="file" name="fileUpload[]" />
<input type="file" name="fileUpload[]" />
<input type="file" name="fileUpload[]" />
<input type="submit" value="Upload Records" />
</form>
我的struts.xml-
<package name="links" extends="struts-default, json-default" namespace="/">
<action name="myInput" class="com.action.MyAction" >
<interceptor-ref name="linksAccessRequired"/>
<interceptor-ref name="fileUpload">
<param name="allowedTypes">*/*</param>
<param name="maximumSize">10485760</param> <!-- 10MB -->
</interceptor-ref>
<interceptor-ref name="defaultStack" />
<result name="success" type="json"/>
<result name="login" type="redirect">/</result>
</action>
</package>
我的操作文件-
import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionSupport;
import java.io.File;
import java.io.IOException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.apache.commons.io.FileUtils;
import org.apache.struts2.interceptor.ServletRequestAware;
public class MyAction extends ActionSupport implements ServletRequestAware {
/**
*
*/
private static final long serialVersionUID = 1L;
private boolean result = false;
private String status = null;
private String msg = null;
HttpServletRequest request = null;
private File[] fileUpload;
private String[] fileUploadFileName;
private String[] fileUploadContentType;
public File[] getFileUpload() {
return fileUpload;
}
public void setFileUpload(File[] fileUploads) {
this.fileUpload = fileUploads;
}
public String[] getFileUploadFileName() {
return fileUploadFileName;
}
public void setFileUploadFileName(String[] fileUploadFileNames) {
this.fileUploadFileName = fileUploadFileNames;
}
public String[] getFileUploadContentType() {
return fileUploadContentType;
}
public void setFileUploadContentType(String[] fileUploadContentTypes) {
this.fileUploadContentType = fileUploadContentTypes;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public String execute() {
System.out.println("Something");
String saveDirectory = "/mypath/excels/Output/"+request.getSession().getAttribute("my")+"/myOut/";
if(this.doUpload(fileUpload, saveDirectory))
{
this.setStatus("Success");
this.setMsg("Files have been upload successfully !");
}
else
{
this.setStatus("Failled");
this.setMsg("Files have not been upload successfully !");
}
return Action.SUCCESS;
}
public boolean doUpload(File[] fileUpload, String saveDirectory) {
// copy the uploaded files into pre-configured location
for (int i = 0; i < fileUpload.length; i++) {
File uploadedFile = fileUpload[i];
String fileName = fileUploadFileName[i];
File destFile = new File(saveDirectory + File.separator + fileName);
try {
FileUtils.copyFile(uploadedFile, destFile);
} catch (IOException ex) {
System.out.println("Could not copy file " + fileName);
ex.printStackTrace();
}
}
return true;
}
@Override
public void setServletRequest(HttpServletRequest request) {
this.request = request;
}
}
为什么我收到“没有为操作和结果定义结果输入”错误? 请建议我解决这个问题。 谢谢
最佳答案
首次阅读 how INPUT result works ,并正确地将其添加到您的操作配置中;
此时,您应该能够自己发现错误,即:
<form action="myInput" enctype="multipart/form-data" method="post" > <input type="file" name="fileUpload[]" /> <input type="file" name="fileUpload[]" /> <input type="file" name="fileUpload[]" /> <input type="submit" value="Upload Records" /> </form>
虽然应该是:
<form action="myInput" enctype="multipart/form-data" method="post" > <input type="file" name="fileUpload[0]" /> <input type="file" name="fileUpload[1]" /> <input type="file" name="fileUpload[2]" /> <input type="submit" value="Upload Records" /> </form>
或者更好:
<form action="myInput" enctype="multipart/form-data" method="post" > <input type="file" name="fileUpload" multiple /> <input type="submit" value="Upload Records" /> </form>
使用 Struts 标签将是:
<s:form action="myInput" enctype="multipart/form-data" method="post" > <s:file name="fileUpload" multiple /> <s:submit value="Upload Records" /> </s:form>
旁注:如果您有兴趣了解如何使用 dropzone.js 在 Struts2 中执行多重上传,this may be worth reading .
关于java - 如何解决 No result Defined for action 和 result input 错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26257975/