Tôi gặp vấn đề lạ ở đây, không chắc chắn đây có phải là lỗi hay không. Dự án đang chạy trong Spring Framework.Chuỗi truy vấn được giải mã bởi Spring Framework
Quan điểm:
<form method="GET" action="someUrl.htm" enctype="application/x-www-form-urlencoded" >
<label>Label</label>
<input name="val1" value="${val1}" />
...
<!-- submit button here -->
</form>
khiển mappend để someUrl.htm
sử dụng SimpleUrlHandlerMapping
<bean id="parameterMethodNameResolver"
class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver"> <property name="methodParamNames">
...
</bean>
<bean id="handlerMapping"
class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="urlDecode" value="false" />
<property name="mappings">
<props>
<prop key="**/someUrl.htm">someController</prop>
</props>
</property>
</bean>
Tôi muốn vượt qua %
như val1
. Nhưng khi tôi đang làm điều này, các đoạn mã sau đây trả về null:
request.getParameter("val1");
catalina.out cho thấy:
Chú ý: Thông số: Character giải mã thất bại. Tham số 'val1' có giá trị '%' đã bị bỏ qua.
Tôi tìm ra rằng chuỗi truy vấn giải mã Spring và request.getQueryString()
trả lại val1=%
nhưng không trả về val1=%25
.
Làm cách nào để ngăn UrlDecoding tại đây?
Đó có phải là lỗi không? Xin lưu ý rằng có thông số urlDecode
được đặt thành false
.
Bất kỳ ý tưởng nào để khắc phục sự cố, bởi vì tôi thực sự cần phải sử dụng ký tự như %&=
.
Bạn đang sử dụng phiên bản Spring nào? – ustun
Phiên bản Spring là 2.0.5. – Sqeezer
Bạn có thể mã hóa các ký tự không? http://www.ietf.org/rfc/rfc2396.txt xác định% as starting en escape sequence, không tuân theo điều này có thể sẽ gây ra vấn đề cho bạn. –