2017-02-01 27 views
0

Я не получаю параметры строки запроса от jsp до контроллера.О действии GET в контроллере jsp to Spring сбрасывает параметры строки запроса url

Ниже мой uploadSuccess.jsp код:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"> 
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> 
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 
<%@ page session="false" %> 

<html> 
<head> 
<title>File Upload Success</title> 
</head> 
<body> 
<c:url var="formActionURL" value="http://localhost:8080/scanpipeline/readQRCode"> 
<c:param name="fileName" value="${fileName}" /> 
</c:url> 

<form method="GET" action="${formActionURL}" > 

<h3> 
File Uploaded Successfully! 
</h3> 

<strong>File name is :<%= request.getAttribute("fileName") %> !!</strong> 
<strong>Total number of data read from file: <%=request.getAttribute("filedata") %> !! 
</strong><br> 
<p></p> 
If you want to see QR Code information in the upload file, click 'Ok' <br> 
<input type="submit" value="Ok"> 
</form> 
</body> 
</html> 
метод

Spring Контроллер: // http://localhost:8080/pipeline/readQRCode

@RequestMapping(value = "/readQRCode", method = RequestMethod.GET) 
public String readQRCode(Model model, @RequestParam(value = "fileName", required = true) String fileName) 
{ 
........................ 
} 

Строка запроса URL, который я вижу в источнике зрения является JSP: action = "http: // localhost: 8080/pipe/readQRCode? fileName = Paper + Scan.pdf">

Однако, когда я отправляю jsp form, он дает мне ошибку Http Status 400 "Обязательный параметр строки 'fileName' отсутствует". Отбрасывает строку запроса? вперед. Пожалуйста, направляйте. Заранее спасибо.

ответ

0

, как я могу видеть из кода вы размещаете эту часть может быть неправильно:

<c:url var="formActionURL" value="http://localhost:8080/scanpipeline/readQRCode"> 

Потому что, когда вы передаете вы будете переадресованы на этот адрес, и поэтому вы не имеете строку запроса.

Попробуйте изменить с добавлением скрытого ввода в форму со значением строки запроса. Таким образом, в качестве метода получения значение этого ввода будет в вашем URL как строка запроса.

Как это:

<form method="GET" action="${formActionURL}" > 

<input type="hidden" value=${fileName} /> 
<h3> 
File Uploaded Successfully! 
</h3> 

Последнее редактирование:

В ответ на ваш комментарий, ваш исходный код был неправильным, потому что вы были с помощью тега в неправильном направлении.

Это правильная форма:

<c:url value="/index.jsp" var="myURL"> 
<c:param name="trackingId" value="1234"/> 
<c:param name="reportType" value="summary"/> 
</c:url> 

<form method="GET" action="<c:import url="${myURL}"/>" > 

Таким образом, вы можете попробовать и это решение применяется к коду, конечно, нужно удалить первое решение.

+0

Спасибо @Mike. Я попробовал, но результат такой же. На этот раз, когда я просмотрел источник в браузере, у меня появился тот же код:

Может быть, браузер, усекающий Строка запроса? –

+0

Я сделал некоторые изменения в своем ответе, попробовав эту новую. И используйте свое старое действие для формы. – Mike

+0

Спасибо @Mike. Теперь он работает со скрытыми параметрами. Я не понял, почему метод контроллера не вызывается, когда я добавляю параметры в строку url. Это неправильный способ кодирования? –

 Смежные вопросы

  • Нет связанных вопросов^_^