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)
....