search
Giriş
Merhabalar arkadaşlar, Sitemizi programlama ile ilgilenen bütün arkadaşlarımızın Türkçe içerik konusunda çektiği sıkıntılar düşünülerek soru/cevap şeklinde bir etkileşimde bulunabilmesi için kurduk. Umuyoruz hepimiz için güzel bir deneyim olur. Hasscript Ekibi
0 oy
444 gösterim

Uygulama içinden response döndürdüğüm zaman aşağıdaki hatayı alıyorum. Controller içindeki metoddan debug yaptığım zaman herşey normal görünüyor. İşlemler bittiği zaman dönen response da aşağıdaki hatayı alıyorum.

  • Circular view path [upload]: would dispatch back to the current handler URL [/upload] again. Check your ViewResolver setup! (Hint: This may be the result of an unspecified view, due to default view name generation.)
  • "Error resolving template \"upload\", template might not exist or might not be accessible by any of the configured Template Resolvers

 

@Controller
public class FileUploadController {
    
   private static final Logger logger = LoggerFactory.getLogger(FileUploadController.class); 
    
   @Autowired
   private FileStorageService fileStorageService;

   @Autowired
   private UploadFileResourceAssembler uploadFileResourceAssembler;
    
      @ApiOperation(notes = "Upload a file", value = "Upload a file", nickname = "post_File")
        @ApiResponses({@ApiResponse(code = 201, message = "Uploaded", response = UploadFileResponse.class),
                @ApiResponse(code = 400, message = "A file upload failed", response = Object.class)})
        @RequestMapping(path = "/upload", method = RequestMethod.POST)
        public Resource<UploadFileResponse> uploadFile(@RequestParam("file") MultipartFile file, @RequestHeader(value = USERNAME) String username) {

            String fileName = fileStorageService.storeFile(file);
            String fileDownloadUri = null;
            try {
                fileDownloadUri = ServletUriComponentsBuilder.fromCurrentContextPath()
                        .path(fileStorageService.loadFileAsResource(fileName).getFile().getAbsolutePath()).path(fileName)
                        .toUriString();
            } catch (IOException e) {
                e.printStackTrace();
            }

            UploadFileResponse createdResource = new UploadFileResponse(fileName, fileDownloadUri, file.getContentType(), file.getSize());

            return uploadFileResourceAssembler.toResource(createdResource);

        }
}

 

Java kategorisinde 6.2k puan

1 cevap

0 oy

Problemin sebebi controller sınıfnı @Controller annotation kullanarak oluşturulmasıymış. Springin ilk versiyonlarından gelen bir annotation olduğu için daha çok MVC için kullanılan bir controller çeşidi olarak frameworkde duruyor. Metod içinde return uploadFileResourceAssembler.toResource(createdResource); bu satır bize bir view sınıfı döndürüyor gibi algılandığı için hatayı alıyoruz. Bunu çözmek için iki yöntem var.

  1.  public @ResponseBody Resource<UploadFileResponse> uploadFile(@RequestParam("file") MultipartFile file, @RequestHeader(value = USERNAME) String username)
    bu metod tanımında @ResponseBody annotation kullanmak.
  2. @Controller yerine @RestController kullanmak. Bu kullanımla metodların dönüşleri otomatik olarak json olarak dönüştürülecek.
6.2k puan

İlgili sorular

0 oy
0 cevap 225 gösterim
0 oy
2 cevap 388 gösterim
388 gösterim
Spring framework kullanarak rest servisler yazıyorum. Bazı durumlarda exception'a düşünce döndürdüğüm response'u exception tipine göre formatlamak ve response'u ve buna uygun http mesajını döndürmek istiyorum. Yani RestController'da bazı durumlarda yanıt vermek yerine exception fırlatacağım ama spring bu exception ı yakalayıp formatlayacak ve uygun http status mesajı ile döndürecek.
24 Mart 2019 Java kategorisinde sinan 291 puan sordu
0 oy
1 cevap 688 gösterim
688 gösterim
Spring kullanrak Rest service ile getUser (userId ile alıyorum) ve getByUserName diye iki methodum var ve userl leri ise api/user/{id} api/user/{userName} şeklinde, ancak ikisini seçmekte kararsız kalıyor sanırım. Bunu nasıl çözerim. @RequestMapping(value = "/user/{userName}", method = ... id) { ............. alınan hata ise; Error: Ambiguous handler methods mapped for HTTP path in spring...
16 Temmuz 2017 Java kategorisinde tolgacelik.art 2.0k puan sordu
0 oy
1 cevap 1.3K gösterim
1.3K gösterim
Selam, Bir spring boot projesi oluşturdum start.spring.io üzerinden web, jpa,mysql seçtikten sonra. Eclipse üzerinden import edip hiç bir ekleme yapmadan ayağa kaldırmaya calıştırırken hata aldım. Neyi yanlış yapıyor olabilirim yardımcı olabilir misiniz. Özetle hatalar şunlar; java ... settings to be loaded from a particular profile you may need to active it (no profiles are currently active).
11 Şubat 2017 Java kategorisinde tolgacelik.art 2.0k puan sordu