<html:errors> not working </html:errors>

时间:2010-07-02 11:23:50

标签: jsp struts

我很少被困住。它没有为我填充错误,而是在没有加载页面。

附上我的代码:

 <?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>

这是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>

这是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;
    }

}

这是表格:

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());
    }
}

因此,在执行后我上传了一个xls文件,如果在validate方法中进行验证,则该文件应该在最后一个文件中失败。它进入了内部,但当它返回到jsp时,它并没有显示任何内容。

请帮忙。

由于 萨钦

1 个答案:

答案 0 :(得分:1)

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

你在上面的struts配置中有一个标签,这意味着你有一个显示消息的文件,最好使用以.properties结尾的名字;编辑该文件以匹配如下。

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.