我知道已经存在一些关于下拉选择保留的问题,但请不要关闭此选项。
我有一个带语言下拉列表的登录页面。用户选择一种语言,并使用新语言刷新页面。当然,选择将消失,并且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 param保持空白。
请帮忙。 感谢。
答案 0 :(得分:0)
只需给选择控件id
,从查询字符串&amp;中读取lang
值。将其设置为select control 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>
答案 1 :(得分:0)
在grails控制器中使用Ajax和Session varible ......
<g:javascript>
function onChange(){
//id = $this.value;
$.ajax({
context: $(this),
url:"${resource()}"+"/yourLanagueController/yourSelectionHolderAction", type:"POST",
data:{"dropdownboxid":id}
});
}
</g:javascript>
`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
}
ALLOHA !!!