1

Spring MVC を使用しています。ローカルから Web ページに PDF ファイルを表示したいと考えています。これを行うには、コントローラーに何をすべきかわかりません。ResponseEntity<byte[]>この質問で likeを返すという同様の問題がいくつか見られますajaxが、これは私が間違っていない場合のためのものであり、これは私の要件ではありません。

アップデート:

これは私がこれまでに試したことです:

<a href="#" onClick="test();" >test</a>

function test(){
      $.ajax({
    type: "POST",
    url: "../admin/module/id.do",
    data: '{ file_id }',
    success: function(response){
           alert(response);
             }
      });
}

そしてコントローラー:

@RequestMapping( value = "/admin/module/id", method = RequestMethod.POST )
    public ResponseEntity<byte[]> getPDF( @PathVariable( "id" )
    int id, Model model )
    {
        System.out.println( "test" );
        Path path = Paths.get( "C:/Users/FORSAK~1/AppData/Local/Temp/spring_tutorial.pdf" );
        byte[] contents = null;
        try
        {
            contents = Files.readAllBytes( path );
        }
        catch( IOException e )
        {

            e.printStackTrace();
        }
        HttpHeaders headers = new HttpHeaders();
        headers.setContentType( MediaType.parseMediaType( "application/pdf" ) );
        String filename = "spring_tutorial.pdf";
        headers.setContentDispositionFormData( filename, filename );
        ResponseEntity<byte[]> response = new ResponseEntity<byte[]>( contents, headers, HttpStatus.OK );
        return response;
    }

alert(response)機能せず、またSystem.out.println( "test" );

firebug からのエラーは"NetworkError: 500 Internal Server Error - http://localhost:8080/ThesisProject/admin/module/id.do"

スタックトレース:

java.lang.IllegalStateException: Could not find @PathVariable [id] in @RequestMapping
    at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter$ServletHandlerMethodInvoker.resolvePathVariable(AnnotationMethodHandlerAdapter.java:857)
    at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.resolvePathVariable(HandlerMethodInvoker.java:710)
    at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.resolveHandlerArguments(HandlerMethodInvoker.java:360)
    at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:171)
    at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:444)
    at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:432)
    ....
4

1 に答える 1

0

まず、例外は非常に単純です

java.lang.IllegalStateException: Could not find @PathVariable [id] in @RequestMapping

そして、あなたは持っています

@RequestMapping( value = "/admin/module/id", method = RequestMethod.POST )

パス変数を宣言せず、特定のパスのみを宣言します。はidリクエストパラメータとして渡されます

data: '{ file_id }',

ちなみにこれは間違っている、そうあるべきだと思う

data: { id: file_id },

代わりにパラメーターに注釈を付けます@RequestParam(value = "id")

于 2013-10-28T02:02:44.847 に答える