Grails/Groovy框架GSP页面跳转无法加载js的问题

在用Grails做一个Web plugin的时候遇到一个问题,当我从A页面中的链接跳转到B页面时,B页面中编写的Java Script无法加载,具体如下:

1、在A页面中用<g:createLink>来生成一个链接

 

 

<body>
	<div data-role="page" data-theme="c">
		<div data-role="header" data-theme="b">
			<a href="<g:createLink 
controller="mobileConfig" action="launchConfig"/>" data-icon="gear" data-iconpos="notext" class="ui-btn-left" data-mini="true">Configuration</a>
			<h1 class="igt-title">${skin.code}: GameList</h1>
			<a href="<g:createLink controller="mobileLogin
" action="logout
"/>" data-icon="delete" data-iconpos="notext" class="ui-btn-right" data-mini="true">Logout</a>
		</div>
……

2、当点击“Configuration”时,Grails框架自动跳转到指定的“launchConfig”页,在该页的js中用jQuerymobile定义了页面中某一select的事件

 

<script type="text/javascript">
			$(document).ready(function(){
				$("#forcePosition").change(function() {
					  var posName=$("#forcePosition option:selected").text();
					  setPosition($(this).val(),posName);
				});

				$('#location-status-select').change(function() {
					  var message = $("#location-status-select option:selected").text();
					  $('#locationstatus').val($(this).val());
					  $('#locationmessage').val(message);
				});

				$('#ipaddress-select').change(function() {
					  $('#ipaddress').val($(this).val());
				});
			});
			
			function setPosition(pos,posName)
			{	
				$('#position').val(posName);
				var postion = pos.split(',');
				[].slice.call(document.querySelectorAll("#latitude,#longitude"),0).forEach(
					function(e,i)
					{	
						e.value = postion[i] || '';
					}
				);
			}
</script>

3、从上一页跳转到当前页时,该段js并未加载,此段js放置在</body>标签之外;

4、用firefox firebug及chrome等工具进行调试并未发现错误,只是当前页的js并未加载,刷新后才加载,后来发现,B页面的<page>标签页下的内容被加载了进来,且A页面的内容仍然存在当前的request中,也就是说从A跳转到B页面时并未重新发送请求,只是将B页面中的<page>标签内容加载到了当前的请求中,一开始js放置在</body>之外,所以无法加载;

5、将js放置在<page>标签内,问题解决

 

总结:这个问题的出现有可能和Grails的跳转机制有关,但由于同时使用了Jquerymobile,所以还需要进一步确认,初步估计前一个因素的可能性较大。

你可能感兴趣的:(grails,jquerymobile,GSP)