在web项目中,如果转向的超链接带有中文字符的话有时候会报错,
java.lang.IllegalArgumentException: 在请求目标中找到无效字符。有效字符在RFC 7230和RFC 3986中定义
这种情况,在jsp界面中加入一个函数
<script type="text/javascript">
function linkClick(linkObject) {
var formObject = document.createElement('form');
document.body.appendChild(formObject);
formObject.setAttribute('method', 'post');
var url = linkObject.href;
var uri = '';
var i = url.indexOf('?');
if(i == -1) {
formObject.action = url;
} else {
formObject.action = url.substring(0, i);
}
if( i >= 0 && url.length >= i + 1) {
uri = url.substring(i + 1, url.length);
}
var sa = uri.split('&');
for(var i = 0; i < sa.length; i++) {
var isa = sa[i].split('=');
var inputObject = document.createElement('input');
inputObject.setAttribute('type', 'hidden');
inputObject.setAttribute('name', isa[0]);
inputObject.setAttribute('value', isa[1]);
formObject.appendChild(inputObject);
}
formObject.submit();
return false;
}
</script>
然后在相关的href上调用该函数对中文进行处理就行了
<a href="${pageContext.request.contextPath}/Car/toUpdateCar?location=${car.location}" onclick="return linkClick(this)">修改</a>