【问题标题】:prevent page from scrolling to top on form submit防止页面在表单提交时滚动到顶部
【发布时间】:2015-09-18 09:39:40
【问题描述】:

一旦从列表框中选择了一个项目,我将提交一个页面,如下所示:

  onchange="submit()"

一旦做出选择,页面会立即滚动到页面顶部,其中包含取决于选择的新信息。

jsf 中有没有办法避免滚动?

最好的问候 埃德蒙

【问题讨论】:

  • 也许你可以使用锚?你的表单操作是什么?
  • 我使用 提交表单。

标签: jsf scroll submit onchange


【解决方案1】:

这不是 JSF 特有的。这是特定于 HTML 的。当您让 JSF 在生成的 HTML input/select 元素上生成 onchange="submit()" 属性时,您基本上是在指示 HTML input/select 元素调用父 HTML <form> 元素的 submit 函数。这将触发一个完整的同步请求,从而导致整个页面重新加载。默认行为是显示页面顶部,就像通过普通链接打开页面或执行刷新一样。

如果你想执行一个异步提交,只需投入一些 ajax。 JSF 2.x 通过<f:ajax> 标签内置了ajax 支持。

所以,而不是

<h:selectOneMenu ... onchange="submit()">
    ...
</h:selectOneMenu>

<h:selectOneMenu ...>
    ...
    <f:ajax />
</h:selectOneMenu>

如果您打算在同一视图的其他位置更新特定组件,请在 render 属性中指定其绝对或相对客户端 ID。

<h:selectOneMenu ...>
    ...
    <f:ajax render="results" />
</h:selectOneMenu>
<h:panelGroup id="results">
    ...
</h:panelGroup>

另见:

【讨论】:

  • 感谢您的精确。我会尝试使用 ajax。
  • JSF 2.0 需要哪些库?
  • 这是现有项目还是新项目?目标服务器的品牌/版本是什么? JSF2 自 2009 年就已经发布了,所以如果它是一个新项目,那将是相当令人惊讶的(这强烈暗示您的学习资源已经完全过时了)。但是,如果它是一个现有项目,或者如果目标服务器也已经过时,那么升级到 JSF2 可能不是那么简单。
  • 嗨 BalusC。看看我下面的帖子。该项目使用 JSF 1.x 已经存在了很长时间。由于您建议解决我第一次提交的问题是使用 JSF 2.x,我一直在尝试切换到 JSF 2.0
  • 因为我使用的是 wildfly,所以我已经从我的 WEB-INF/libs 中删除了所有 JSF 库,除了 tomahawk20-1.1.14.jar。现在我收到以下错误:javax.faces.FacesException:不能两次添加相同的组件。
猜你喜欢
  • 2010-10-15
  • 2021-02-28
  • 1970-01-01
  • 1970-01-01
  • 2014-11-05
  • 2013-06-16
  • 1970-01-01
  • 1970-01-01
  • 2021-07-28
相关资源
最近更新 更多