<html: errors> не работает - PullRequest
       0

<html: errors> не работает

1 голос
/ 02 июля 2010

Я немного застрял. Это не заполнение ошибок для меня, а загрузка страницы без.

Прикрепив мой код:

 <?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 Ответ

1 голос
/ 08 апреля 2013
<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.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...