Хобрук: Ваш путь к мастерству в программировании

получение null в значении файла, переданном из jquery-ajax в классе действий struts2

Я написал код для загрузки файла из jsp в базу данных mysql с использованием jquery-ajax при выборе файла из файлового браузера. при выборе файла JavaScript передает файл и идентификатор в качестве параметра в класс действий, но я получаю нулевое значение для файла в классе действий.

может кто-нибудь, пожалуйста, скажите мне, как решить эту проблему.

index.jsp

<%@taglib uri="/struts-tags" prefix="s"%>
<html>
<head>
<script src="js/jquery-1.7.2.min.js"></script>
<script src="js/jquery-ui-1.8.21.custom.min.js"></script>
<script>
    function filebrowse(toolid){
        document.getElementById("toolidforimg").value=toolid;
        $("#filetochange").trigger('click');
        return false;
    }

    function changeFile(var3)
    {
       var param="filetochange="+(document.getElementById("filetochange").value)+"&toolidforimg="+document.getElementById("toolidforimg").value;
        var resultStringX = $.ajax({
        type: "POST",
        url:"getFileChange.action", 
        enctype: 'multipart/form-data',
        data: param,
        async: false
        }).responseText;
        resultStringX=$.trim(resultStringX);

     return false;  
    }
</script>
</head>
<body>
<s:hidden value="" name="toolidforimg" id="toolidforimg"/>
<a href="#" onclick="return filebrowse('1')" id="select_logo">Change File</a>
<input style="opacity:0;" type="file" onchange="changeFile(this.value)" id="filetochange" name="filetochange" >
</body>
</html>

struts.xml

<action name="getFileChange" class="com.MyactionClass" method="getFileChange">
     <result name="success">browseFiles.jsp</result>
</action>

MyactionClass.java

class MyactionClass
{
  File filetockhange;
  String toolidforimg;

  public File getFiletochange() {
        return filetochange;
    }

  public void setFiletochange(File filetochange) {
        this.filetochange = filetochange;
    }

   public String getToolidforimg() {
        return toolidforimg;
    }

   public void setToolidforimg(String toolidforimg) {
        this.toolidforimg = toolidforimg;
    }

   public String getFileChange()
   {
    HERE I AM GETTING filetochange VALUE AS NULL

    return SUCCESS;
   }
}

  • У вас опечатка filetockhange. 27.06.2013
  • извините, это была ошибка при размещении вопроса..... 27.06.2013

Ответы:


1

Поместите элемент формы HTML вокруг полей, которые вы хотите отправить (Файл, Скрытый и т. д.).

Этого должно быть достаточно.

Некоторые подсказки:

  • всегда указывайте DTD, иначе вы попадете в странный мир Режим причудливого поведения. В вашем случае должно подойти HTML5 DTD, потому что вы можете загружать файлы через AJAX только с HTML5: замените <html> на <!DOCTYPE html>
  • по возможности всегда используйте теги Struts2 вместо тегов HTML, например <s:form>, <s:file> и <s:a>.
  • только методы доступа (геттеры) должны начинаться с get, а не другие методы и уж точно не имя действия;
01.07.2013
Новые материалы

Создание кнопочного меню с использованием HTML, CSS и JavaScript
Вы будете создавать кнопочное меню, которое имеет состояние наведения, а также позволяет вам выбирать кнопку при нажатии на нее. Финальный проект можно увидеть в этом Codepen . Шаг 1..

Внедрите OAuth в свои веб-приложения для повышения безопасности
OAuth — это широко распространенный стандарт авторизации, который позволяет приложениям получать доступ к ресурсам от имени пользователя, не раскрывая его пароль. Это позволяет пользователям..

Классы в JavaScript
class является образцом java Script Object. Конструкция «class» позволяет определять классы на основе прототипов с чистым, красивым синтаксисом. // define class Human class Human {..

Как свинг-трейдеры могут использовать ИИ для больших выигрышей
По мере того как все больше и больше профессиональных трейдеров и активных розничных трейдеров узнают о возможностях, которые предоставляет искусственный интеллект и машинное обучение для улучшения..

Как построить любой стол
Я разработчик программного обеспечения. Я люблю делать вещи и всегда любил. Для меня программирование всегда было способом создавать вещи, используя только компьютер и мое воображение...

Обзор: Машинное обучение: классификация
Только что закончил третий курс курса 4 часть специализации по машинному обучению . Как и второй курс, он был посвящен низкоуровневой работе алгоритмов машинного обучения. Что касается..

Разработка расширений Qlik Sense с qExt
Использование современных инструментов веб-разработки для разработки крутых расширений Вы когда-нибудь хотели кнопку для установки переменной в приложении Qlik Sense? Когда-нибудь просили..