2010-07-02 6 views
1

Je suis un peu coincé avec. Ce n'est pas en train de remplir les erreurs pour moi, mais plutôt de charger la page sans.<html:errors> ne fonctionne pas

Fixation mon code:

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" 
           "struts-config_1_2.dtd"> 
<struts-config> 
    <display-name>CSV File Upload</display-name> 
    <description>CSV File Upload</description> 

    <form-beans> 
    <form-bean name="FileUploadForm" 
       type="example.struts.FileUploadForm"> 
    </form-bean> 
    </form-beans> 

    <action-mappings> 
    <action path="/uploadfile" 
       input="/jsp/index.jsp" 
       name="FileUploadForm" 
       validate="true" 
       scope="request"    
       type="example.struts.FileUploadAction"> 
      <forward name="failure" path="/jsp/error.jsp" /> 
      <forward name="success" path="/jsp/uploadsuccess.jsp" /> 
     </action> 
    </action-mappings> 

<message-resources parameter="resources.MessageResources" /> 

</struts-config> 

Ceci est index.jsp:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" 
    pageEncoding="ISO-8859-1"%> 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> 
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> 
<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
<title>Home</title> 

</head> 
<body> 
<h2>File upload</h2> 
<html:errors /> 

<html:form action="uploadfile.do" enctype="multipart/form-data" method="POST"> 

    <html:file property="file" /> 
    <br/> 
    <html:submit value="Upload" /> 
</html:form> 

</body> 
</html> 

Ceci est la classe d'action:

package example.struts; 

import org.apache.struts.action.Action; 
import org.apache.struts.action.ActionMapping; 
import org.apache.struts.action.ActionForm; 
import org.apache.struts.action.ActionForward; 
import org.apache.struts.upload.FormFile; 

import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 

import java.io.BufferedReader; 
import java.io.File; 
import java.io.FileReader; 
import java.io.InputStream; 
import java.io.FileInputStream; 
import java.io.InputStreamReader; 

import java.util.ArrayList; 
import java.util.Iterator; 
import java.util.StringTokenizer; 

import org.apache.poi.hssf.usermodel.HSSFCell; 
import org.apache.poi.hssf.usermodel.HSSFRichTextString; 
import org.apache.poi.hssf.usermodel.HSSFRow; 
import org.apache.poi.hssf.usermodel.HSSFSheet; 
import org.apache.poi.hssf.usermodel.HSSFWorkbook; 
import org.apache.poi.poifs.filesystem.POIFSFileSystem; 

/** 
* 
* @author Sean C. Sullivan 
* 
* 
* 
*/ 
public class FileUploadAction extends Action 
{ 
    public ActionForward execute(ActionMapping mapping, 
      ActionForm form, 
      HttpServletRequest request, 
      HttpServletResponse response) throws Exception 
    { 
     System.out.println("Hello"); 
     FileUploadForm uploadForm = (FileUploadForm) form; 

     FormFile file = uploadForm.getFile(); 

     ActionForward forward = null;  

     try 
     {    
      CommonUtility utility = new Utility(); 
      utility.parseCSV(file); 
      forward = mapping.findForward(Forward.KEY_SUCCESS); 
     } 
     finally 
     {   
      file.destroy(); 
     } 

     return forward; 
    } 

} 

Ceci est la forme:

package example.struts; 

import org.apache.struts.action.ActionForm; 
import org.apache.struts.action.ActionMapping; 
import org.apache.struts.action.ActionErrors; 
import org.apache.struts.action.ActionMessage; 
import org.apache.struts.upload.FormFile; 
import javax.servlet.http.HttpServletRequest; 

/** 
* 
* @author Sean C. Sullivan 
* 
*/ 
public class FileUploadForm extends ActionForm 
{ 
    private FormFile file; 

    public void setFile(FormFile f) 
    { 
     this.file = f; 
    } 

    public FormFile getFile() 
    { 
     return this.file; 
    } 

    public void reset(ActionMapping mapping, HttpServletRequest request) 
    { 
     this.file = null; 
    } 

    public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) 
    { 
     ActionErrors errors = new ActionErrors(); 

     if (this.getFile() == null) 
     { 
      errors.add("file", new ActionMessage("error.file.missing")); 
     } 
     else if (this.getFile().getFileName() == null) 
     { 
      errors.add("file", new ActionMessage("error.empty.filename")); 
     } 
     else if (this.getFile().getFileName().length() < 1) 
     { 
      errors.add("file", new ActionMessage("error.empty.filename")); 
     } 
     else if (this.getFile().getFileSize() < 1) 
     { 
      errors.add("file", new ActionMessage("error.file.size")); 
     } 
     else if (!this.getFile().getFileName().endsWith(".csv")) 
     {   
      errors.add("file", new ActionMessage("error.file.type"));   
     }  
     return errors; 
    } 

    public String toString() 
    { 
     return "file=" + String.valueOf(this.getFile()); 
    } 
} 

Donc, après l'exécution, je suis en train de télécharger un fichier xls qui devrait échouer en dernier si cas de validation dans la méthode de validation. ça va à l'intérieur mais quand il revient à la jsp, ça ne montre rien.

Aidez-nous s'il vous plaît.

Merci Sachin

+0

Quelle version de Struts utilisez-vous? –

Répondre

1
<message-resources parameter="resources.MessageResources"/> 

Vous avez une balise dans la configuration des entretoises comme au-dessus de ce qui signifie que vous avez un fichier pour afficher des messages, sa meilleure pratique d'utiliser des noms qui se termine par .properties; modifier ce fichier pour correspondre comme ci-dessous.

errors.header=<UL> 
errors.prefix=<LI> 
errors.suffix=</LI> 
errors.footer=</UL> 

error.empty.filename = File name cannot be empty, please provide valid file name. 
Questions connexes