Есть класс "Parser", который берёт загруженный файл через get запрос и заносит данные в базу данных H2. Если использовать его в классе со SpringApplication.run, создав бин "CommandLineRunner demo(Repository repo)", то класс обрабатывает файл. При попытке воспользоваться тем же классом "Parser" в классе-контроллере, не удается передать репозиторий. Пробовал ставить @Autowired на переменную репозитория в классе "Parser", внедрял репозиторий в метод контроллера. Не получается, переменная с репозиторием null и всё.
Parser.java
@Component
public class Parser {
Customer data;
Visit visit;
Cart cart;
Pay pay;
Calendar calendar = new GregorianCalendar();
InetAddress ip;
URL url;
CartRepo cartRepo;
CustomerRepo customerRepo;
PayRepo payRepo;
VisitRepo visitRepo;
public void parsing(File logs){код обработки}
Controller.java
//метод обработки файла
public String parseFile(Model model,
Parser parser,
@RequestParam("file") MultipartFile file){
if (!file.isEmpty()) {
try {
//Получение файла UploadFile
parser.parsing(UploadFile);
return "reports/list_of_reports.html";
} catch (Exception e) {
//обработка исключений
return "error.html";
}
Git. В ветке main, работающий вариант класса, в ветке dev ошибка.
Вы передаете Parser
параметром вместе с моделью и RequestParam
-ом. Откуда форма, в которой вы вызываете метод POST
знает про ваш парсер? Может, его нужно инжектить в том же контроллере, но выше?
@Controller
public class IndexController {
private final Parser parser;
@Autowired
public IndexController(Parser parser) {
this.parser = parser;
}
@GetMapping("/")
public String index(){
return "index.html";
}
@PostMapping("/")
public String parseFile(Model model,
@RequestParam("file") MultipartFile file){
if (!file.isEmpty()) {
try {
byte[] bytes = file.getBytes();
File UploadFile = new File("upload/logs.txt");
BufferedOutputStream stream =
new BufferedOutputStream(new FileOutputStream(UploadFile));
stream.write(bytes);
stream.close();
parser.parsing(UploadFile);
return "reports/list_of_reports.html";
} catch (Exception e) {
model.addAttribute("message","Вам не удалось загрузить " + file.getName() + " => "+e.getMessage());
return "error.html";
}
} else {
model.addAttribute("message","Вам не удалось загрузить " + file.getName() + " потом что файл пустой.");
return "error.html";
}
}
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Продолжаю делать игру на js игру "Верю/не верю"На экране поочередно появляются заголовки утверждений
Решил заморочаться с голосовым вводом, нашёл картинку в интернете, подключил(предварительно скачав), подогнал по размерам с помощью скрипта...