2016-06-29 12 views
1

Ich vermisse offensichtlich etwas, aber ich weiß nicht, was ...
Es ist dumm, wie viel Kleinigkeiten machen Sie verrückt mehr als kompliziert diejenigen ...

Dies ist der Code der Steuerung:
java.util.MissingFormatArgumentException: Format-Spezifizierer '% s'

@RequestMapping(value = "/getClienteNomeCognome", method = RequestMethod.GET) 
public ResponseEntity<List<Object>> getClienteNomeCognome(@RequestParam("nomeCliente") String nomeCliente, 
     @RequestParam("cognomeCliente") String cognomeCliente) { 
    List<Object> listaRisultati = new ArrayList<Object>(); 
    try { 
     listaRisultati = serviziDocumentaleService.getClienteNomeCognome(nomeCliente, cognomeCliente); 
    } catch (Exception e) { 
     LOGGER.warn(String.format("Errore inatteso sulla chiamata del servizio: [%s]", e.toString())); 
    } 
    LOGGER.info(String.format("Avvio ricerca cliente con nome: %s, cognome: %s)", nomeCliente, cognomeCliente)); 
    return new ResponseEntity<List<Object>>(listaRisultati, HttpStatus.OK); 
} 

Und das ist getClienteNomeCognome:

public List<Object> getClienteNomeCognome(String nome, String cognome) throws Exception { 
    try { 
     final RestTemplate restTemplate = new RestTemplate(); 
     final String url = "somelink?cognome=%25"+cognome+"%25&nome=%25"+nome+"%25"; 
     final ResponseEntity<List> response = (ResponseEntity<List>) restTemplate.getForObject(url, List.class); 
     if (response.getBody() != null && response.getBody().toString().contains("<error>")) { 
      throw new Exception(String.format(
        "La risposta del servizio contiene degli errori: %s", 
        response.getBody())); 
     } else { 
      LOGGER.debug("Fine chiamata al servizio di ricerca cliente"); 
      return response.getBody(); 
     } 
    } catch (HttpClientErrorException hcee) { 
     throw new Exception(String.format(
       "Errore durante la chiamata. Error: %s", 
       hcee.getMessage())); 
    } catch (Exception e) { 
     throw new Exception(String.format(
       "Errore generico durante la chiamata al servizio. Error: %s" 
         + e.getMessage())); 
    } 

} 
+0

Haftungsausschluss sein sollte: Hat es nicht versucht. Das Problem könnte jedoch "[% s]" und insbesondere die eckigen Klammern sein. Versuchen Sie, sie zu entfernen oder zu entkommen. – oberbics

+0

Ziemlich sicher, dass Ihr Logger auch das Format unterstützt und Sie müssen 'String.format' nicht verwenden. Z.B. LOGGER.warn ("Errore inatteso sulla chiamata del servizio: [{}]", e); 'Ihr Fehler btw beklagt sich, dass es ein% s ohne eine Sache gibt, an seinen Platz zu setzen – zapl

+0

Ihr gelieferter Code lief gut auf meinem Computer . So kann der Fehler von Ihrer Methode getClienteNomeCognome kommen. LOGGER hat außerdem die Möglichkeit, String ohne String.format zu formatieren. Zum Beispiel: 'LOGGER.info (" Test {} ", nomeClient);' – Minh

Antwort

4
throw new Exception(String.format(
      "Errore generico durante la chiamata al servizio. Error: %s" 
        + e.getMessage())); 

throw new Exception(String.format(
      "Errore generico durante la chiamata al servizio. Error: %s", 
        e.getMessage())); 
+0

Das hat den Job gemacht! Vielen Dank! –

0

Ich kann das Problem nicht 100% sicher sein, da sein Code fehlt, damit ich es von hier emulieren kann. Aber es sieht so aus:

LOGGER.info(String.format("Avvio ricerca cliente con nome: %s, cognome: %s)", nomeCliente, cognomeCliente)); 

hat einen zusätzlichen ) nach dem letzten %s, so vielleicht ist es einfach nicht richtig lesen? Es sei denn, das ist nur ein Fehler beim Kopieren des Codes hier.

Lassen Sie uns wissen, ob das funktioniert.

+0

Danke, dass Sie mir diesen Tippfehler bewusst gemacht haben, aber das ist nicht das Problem :) –

+0

Das ist in Ordnung. Gibt dein Compiler dir wenigstens die Zeilennummer, wo der Fehler ist? – DGonz