如何在页面刷新后在grails中保留下拉选择
How to retain dropdown selection in grails after page refresh?
我知道已经有一些关于保留下拉选择的问题,但请不要关闭这个问题。
我有一个带有语言下拉列表的登录页面。用户选择一种语言,页面将使用新语言刷新。当然,选择会消失,lang参数也不会移动到整个应用程序中。主页以默认语言打开,而不是以用户想要的语言打开。
这是我的代码:
.gsp文件
<g:select style="width: 60px; background-color: transparent; border: 0px;"
onchange="goToPage(this.value)" name="lang"
from="${LangCodeBook.list()}" value="" noSelection="['':'...']">
</g:select>
<script type="text/javascript">
function goToPage(lang){
if(lang=='GER'){
window.location.href = "?lang=de_DE";
}
else if(lang=='RUS'){
window.location.href = "?lang=ru_RU";
}
else if(lang=='ENG'){
window.location.href = "?lang=en_GB";
}
}
</script>
另一边是MyEventListener.groovy,他将所有参数(用户名、密码、lang)保存到一个对象中。
def paramObject=RequestContextHolder.currentRequestAttributes().getParams()
问题是lang参数保持为空。
请帮忙。谢谢
只需给select控件一个id
,从查询字符串中读取lang
值&将其设置为select控件onload的选定值,如下所示。
document.getElementById('lang').value= getParameterByName("lang");
<g:select style="width: 60px; background-color: transparent; border: 0px;"
onchange="goToPage(this.value)" name="lang" id="lang"
from="${LangCodeBook.list()}" value="" noSelection="['':'...']">
</g:select>
<script type="text/javascript">
document.getElementById('lang').value= getParameterByName("lang");
function goToPage(lang){
if(lang=='GER'){
window.location.href = "?lang=de_DE";
}
else if(lang=='RUS'){
window.location.href = "?lang=ru_RU";
}
else if(lang=='ENG'){
window.location.href = "?lang=en_GB";
}
}
function getParameterByName(name) {
name = name.replace(/['[]/, "'''[").replace(/[']]/, "''']");
var regexS = "[''?&]" + name + "=([^&#]*)";
var regex = new RegExp(regexS);
var results = regex.exec(window.location.search);
if (results == null) return "";
else return decodeURIComponent(results[1].replace(/'+/g, " "));
}
</script>
非常简单
在grails控制器中使用Ajax和Session variable。。。
ajax函数jquery on更改下拉框上的函数
<g:javascript>
function onChange(){
//id = $this.value;
$.ajax({
context: $(this),
url:"${resource()}"+"/yourLanagueController/yourSelectionHolderAction", type:"POST",
data:{"dropdownboxid":id}
});
}
</g:javascript>
您的控制器和会话变量
在登录页面上,有些地方让你的会话变为null
`def session.selectedlanagueid = null`
def yourSelectionHolderAction(params){
//always hold one ID only so when u
//set session varible make to null first then add
session.selectedlanagueid = null
if(params.id)
session.selectedlanagueid = id;
render 'test' // or '' // or any valid json render result
}
阿罗哈!!!
相关文章:
- 提交后保留下拉选择的值
- 数据是否等于保留或无法被 jQuery/Sizzle 选择
- jQuery blimp文件上传-上传后保留选择图像行
- 保留动态创建的下拉列表's在事件窗口.history.back()上选择的值-JavaScript
- 保留选项列表以供选择
- Yii - 下拉不会保留更改后选择的值
- 余烬.当用户刷新网站时,保留下拉菜单中的选择
- 如何在更改数据源后保留 UI 网格选择
- 我想使用 javascript 将第一个链接保留为默认选择
- 如何在提交查询后保留选择状态
- 在页面重新加载时保留下拉选择
- 使用jQuery UI的选择菜单保留图片
- 将复选框选择保留在多页分页中
- 选择2个自定义匹配器,但保留带状音调符号
- 在tinyMCE问题中单击自定义按钮后保留选择
- 无法保留选择框的值
- 保留“选择多个”框中的值
- 返回和保留选择的下拉列表函数
- 使用range保留选择中的换行符和回车符?Javascript / jquery
- Javascript/jquery:保留选择框的选项项