我正在将 JSF 前端用于上传或删除图像的页面。单击上传或删除按钮会导致回发,并且页面会以更新的状态重新加载。但是,这会重置页面的滚动位置。我应该如何在回发操作中保留此页面的回滚。
S D
问问题
4717 次
3 回答
1
您可以使用 actionListener 来做到这一点。例如,在您的页面中(例如 page.jsf):
<f:view>
<h:form>
<h:commandLink actionListener="#{bean.method}">
<h:outputText value="Submit" />
<f:param name="anchor" value="image" />
</h:commandLink>
</h:form>
<div id='result'>
<h1><a name='image'>Image</a></h1>
</div>
</f:view>
托管 bean 看起来像:
public class Bean {
public void method(ActionEvent actionEvent) {
// Get parameter
String ancla = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("anchor");
try {
FacesContext.getCurrentInstance().getExternalContext().redirect("page.jsf#" + anchor);
} catch (IOException e) {
e.printStackTrace();
}
}
}
希望这可以帮助
于 2010-09-15T12:53:22.690 回答
0
如果您使用的是 Apache MyFaces Tomahawk,您可以设置参数 AUTOSCROLL,然后确保启用 AutoScrollPhaseListener。
我不确定这个功能是由 JSF 指定的,而是由 Apache MyFaces Tomahawk 额外实现的。
此外,请注意,在 1.1.6 版本之前,AUTOSCROLL 实现中存在跨站点脚本漏洞。
于 2008-10-29T18:03:34.630 回答
0
你可以使用 jquery .. 使用 cookies .. 在准备好的功能
$(function(){
//set window scroll position if cookie is set
window.scroll(0,getCookie('myCookie'));
//unset cookie after setting scroll position
deleteCookie('myCookie');
//make this class objects keep page scroll position
jQuery(window).unload(function() {
setCookie('myCookie', getPageScroll());
});
//-------------------
});
准备好功能后添加此功能..
function setCookie(name,value) {
var date = new Date();
date.setTime(date.getTime()+(10*1000));
var expires = "; expires="+date.toGMTString();
document.cookie = name+"="+value+expires+"; path=/";
}
function getCookie(name) {
var nameEQ = name + "=";
var ca = document.cookie.split(';');
for(var i=0;i < ca.length;i++) {
var c = ca[i];
while (c.charAt(0)==' ') c = c.substring(1,c.length);
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
}
return null;
}
function deleteCookie(name) {
setCookie(name,"",-1);
}
我希望这对你有帮助..
于 2014-05-15T16:56:16.397 回答