使用jsf编辑数据表中的行时导航到锚点

时间:2012-09-24 14:19:55

标签: jsf java-ee datatable

(使用jsf-2)

我有一个dataTable,其中一列可以编辑:

        <h:column>
            <f:facet name="header">
                <h:outputText value="Label" style="font-weight: bold">
                </h:outputText>
            </f:facet>
            <h:inputText value="#{m.author2displayed}" rendered="#{m.editable}" size="10"/>
            <h:outputText value="#{m.author2displayed}" rendered="#{not m.editable}"/>
            <h:commandButton value="save edits" rendered="#{m.editable}" onclick="submit()" action ="#{finalCheckBean.saveedits()}"/>
        </h:column>

当我点击“保存编辑”时,我们保持相同的视图,这是所需的效果(finalCheckBean.saveedits()返回null)。

问题:浏览器全部滚动到页面顶部,而我希望页面保持显示在刚编辑的行的级别。我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:2)

如果你已经在使用JSF2,只需在命令按钮中使用<f:ajax>引入一些ajax魔法。将待执行和渲染的组件包装在一个公共组件中,并在execute的{​​{1}}和render中引用它。

<f:ajax>

这样滚动位置将保持不变(前提是您仍然可以从操作方法返回<h:column> <f:facet name="header"> <h:outputText value="Label" style="font-weight: bold" /> </f:facet> <h:panelGroup id="author2displayed"> <h:inputText value="#{m.author2displayed}" rendered="#{m.editable}" size="10"/> <h:outputText value="#{m.author2displayed}" rendered="#{not m.editable}"/> <h:commandButton value="save edits" rendered="#{m.editable}" onclick="submit()" action="#{finalCheckBean.saveedits()}"> <f:ajax execute="author2displayed" render="author2displayed" /> </h:commandButton> </h:panelGroup> </h:column> null)。