我有一个链接http://localhost:8080/Test/Page.faces?id=asdasdasd的网页 页面有2个文本字段和一个按钮,在用户输入详细信息并单击提交后,当您第一次单击提交按钮时,它会正常工作,id将返回确切的值,但如果用户从未输入值,点击提交将调用验证,然后再次单击该按钮,id返回null?如何解决这个问题任何人都可以帮忙?
答案 0 :(得分:0)
是的,当用户点击按钮时,浏览器会向服务器发出新请求。该新请求没有?id = asdasdasd作为其中的一部分。我能想到的最简单的解决方案是将该值存储到页面上的隐藏文本字段中。您可以使用一些javascript来填充值。
所以,如果你有< h:hidden id =“idHidden”value =“#{mybean.idHidden}”/>在你的JSP上,也许是这样的一些javascript:
<script type='text/javascript'>
function gup( name )
{
name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
var regexS = "[\\?&]"+name+"=([^&#]*)";
var regex = new RegExp( regexS );
var results = regex.exec( window.location.href );
if( results == null )
return "";
else
return results[1];
}
if(gup('id') != "") {
document.forms[0].idHidden.value = gup('id');
}
</script>
我没有检查此代码是否有错误,但这个想法是第一次加载页面时,'id'的值存储在隐藏的输入字段中。该字段绑定到托管bean,因此该值将在页面刷新期间保持不变。只需引用存储在bean上的id值(如上例中的idHidden),而不是请求参数。
BTW:我从http://www.netlobo.com/url_query_string_javascript.html
中偷走了GUP功能尼克