Erro 500 aplicação web

6 respostas Resolvido
javascriptjava
ASHAMM

Olá :slight_smile:

Criei um programa que recebe um input html e a partir do javascript é chamada uma classe java que retorna uma string com o resultado. no entanto está a dar um erro que nao consigo resolver! Deixo aqui o ficheiro Javascript e o Service e Controller java. Se precisarem de mais alguma coisa é só dizer :wink:

JavaScript:

function myFunction(noticia) {
	
	var noticia = document.getElementById('txtCC1').value;
	
     $.ajax({
    	
        type: 'GET',
        url: '/demo-checker/src/main/java/com/newschecker/demochecker/controller/NewsController',             
        success: function(noticia) { 
        	var five = pesquisaFakeNews("teste teste teste");
                    //DO SOMETHING HERE AFTER YOU GET THE RESPONSE FROM the validate function
                    document.getElementById("res").innerHTML = five;
                 },
        error: function(jqXHR, textStatus, errorThrown) {
        	document.getElementById("res").innerHTML = "Erro";                          
               }
    });

}

Service Java

package com.newschecker.demochecker.service;

import java.io.IOException;

import java.io.UnsupportedEncodingException;

import java.net.URLDecoder;

import java.nio.charset.StandardCharsets;

import java.util.ArrayList;

import java.util.List;

import java.util.regex.Matcher;

import java.util.regex.Pattern;
import org.jsoup.Jsoup;

import org.jsoup.nodes.Document;

import org.jsoup.nodes.Element;

import org.jsoup.select.Elements;

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

import org.springframework.stereotype.Service;

import javafx.util.Pair;
@Service
public class NewsCheckerService {
	
		private static Logger log = LoggerFactory.getLogger(NewsCheckerService.class);
		
		public String pesquisaFakeNews(String noticia) throws IOException {
			
			noticia = isolaPalavrasChave(noticia);
...

Controller

package com.newschecker.demochecker.controller;

import java.io.IOException;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

import com.newschecker.demochecker.service.NewsCheckerService;

@Controller
public class NewsController {

	@Autowired
	private NewsCheckerService service;
	
	@RequestMapping("/demo-checker/src/main/java/com/newschecker/demochecker/controller/NewsController")
	public String getDadosViaUrl(String data) throws IOException {
		
		String resposta = service.pesquisaFakeNews(data);
		
		return resposta;
	}
}

Pagina Erro LocalHost:

Console

Obrigado :slight_smile:

6 Respostas

juliofsn

Você precisa aprender a ler as mensagens de erro, lá diz claramente o que está acontecendo:

Na linha 191 do arquivo NewsCheckerService.java (dentro do método isolaPalavrasChave) está lançando uma NUllPointerException, ou seja, nessa linha você está tentando acessar um método ou atributo de um objeto que ainda está nulo.

ASHAMM

Sim eu sei isso! Isso acontece porque quando a function no javascript chama o metodo não envia a string requerida pelo metodo! Por isso estou a pedir ajuda para saber como faço isso no javascript! :wink:

juliofsn
Solucao aceita

Entendi, nesse caso você precisa configurar um PathVariable, pra começar você vai precisar mudar no seu endpoint java, aliás, o caminho do RequestMapping não precisa ser o caminho completo para o arquivo, pode ser um nome qualquer desde que seja único na aplicação, mas vou continuar usando do jeito que você fez:

@RequestMapping("/demo-checker/src/main/java/com/newschecker/demochecker/controller/NewsController/{data}") public String getDadosViaUrl(@PathVariable("data") String data) throws IOException {

Veja que eu adicionei uma variável {data} na url, isso pq vc está acessando por GET, se fosse via POST isso mudaria um pouco. E com a anotação @PathVariable eu fiz a associação da variável {data} na url com o parâmetro data do método.

No seu javascript você tbm vai mudar:

url: '/demo-checker/src/main/java/com/newschecker/demochecker/controller/NewsController/' + data,

Na linha que você define a url, você vai passar o conteúdo da variável data.

ASHAMM

Obrigado pela ajuda! Mas continua a dar-me o mesmo erro! Não consigo perceber o que está a dar errado!

Dá-me este erro:

GET http://localhost:8181/demo-checker/src/main/java/com/newschecker/demochecker/controller/NewsController/teste 500 jquery-1.7.1.min.js:4

PedreiroDeSoftware

Não entendo muito de jQuery.
Mas aparentemente vc não está enviando o parâmetro notícia na requisição.

Tente:

function myFunction(noticia) {
	
	var noticia = document.getElementById('txtCC1').value;
	
     $.ajax({
    	noticia: notícia,
        type: 'GET',
        url: '/demo-checker/src/main/java/com/newschecker/demochecker/controller/NewsController',             
        success: function(noticia) { 
        	var five = pesquisaFakeNews("teste teste teste");
                    //DO SOMETHING HERE AFTER YOU GET THE RESPONSE FROM the validate function
                    document.getElementById("res").innerHTML = five;
                 },
        error: function(jqXHR, textStatus, errorThrown) {
        	document.getElementById("res").innerHTML = "Erro";                          
               }
    });

}
ASHAMM

Muito obrigado pela ajuda! De facto não estava enviando a informação para a classe! Já corrigi isso! Mas tambem não estava bem importado o thymeleaf! Já está a funcionar :slight_smile:

Criado 17 de dezembro de 2019
Ultima resposta 18 de dez. de 2019
Respostas 6
Participantes 3