【问题标题】:JSF: Reload page after data changeJSF:数据更改后重新加载页面
【发布时间】:2011-01-17 23:14:07
【问题描述】:

使用DataModel<MyObject>,我根据this response填一张数据表

现在在每一行的末尾我有一个删除按钮,它调用我的 bean 的某个方法。数据被彻底删除。但由于删除后数据已更改,我想重新加载页面以反映更改。

我的尝试是在faces-config.xml 中添加导航规则:

概述 /overview.jsp 已删除订阅 /overview.jsp

如果我有<redirect /> 或没有,无论哪种方式,它都不会重新加载或做任何其他事情。数据被删除,因此实际调用了 bean 的方法。

我的按钮如下所示:

<h:dataTable border="1" value="#{overviewBean.overviewModel }" var="item" first="0">
    <h:column id="column13">
        <f:facet name="header">
            <h:outputText value="#{messages.overviewDeleteItem }"></h:outputText>
        </f:facet>
        <h:commandButton action="#{overviewBean.deleteItem}" value="X"/>
    </h:column>
</h:dataTable>

设置属性type="submit"实际上解决了这个问题。页面被重新加载。

我现在的问题是:真的需要提交吗? JSF(Apache MyFaces)不是有某种机制使用AJAX来消除刚刚删除的行吗?

感谢您尝试帮助 JSF 新手。

【问题讨论】:

    标签: jsf datatable backing-beans


    【解决方案1】:

    只需从数据模型的支持列表中删除该项目。更改将反映在模型中。

    基本上:

    private List<MyObject> overviewList;
    private DataModel overviewModel;
    
    public OverviewBean() {
        overviewList = overviewDAO.list();
        overviewModel = new ListDataModel(overviewList);
    }
    
    public void deleteItem() {
        MyObject myObject = (MyObject) overviewModel.getRowData();
        overviewDAO.delete(myObject);
        overviewList.remove(myObject); // See?
    }
    

    此后不需要重定向。如果 action 方法返回 void(或null),它仍然会转到同一页面。

    在 JSF 2.0 中引入了 Ajaxical 功能,但如果我没记错的话,您仍然使用 JSF 1.x。如果您认为这是必要的,那么您最好的选择是采用像 Ajax4jsf(目前是 RichFaces 的一部分)这样的第 3 方组件库。

    【讨论】:

    • 又是一个很好的回应。谢谢!嗯...当我有返回void 的方法时,eclipse 在JSP 编辑器中抱怨它...会再试一次。
    • Eclipse 是个混蛋。忽略并运行它。这些错误/警告是可配置的。你最终也可以只返回null
    • Eclipse 很酷 =) 它在 JSF 的艰苦学习过程中帮助了我很多点。但是,是的,你是对的,有时它抱怨的比它应该的多。也许这取决于实现(Myfaces/Mojarra 或它的调用方式)。谢谢!
    • 不,它是 Eclipse 本身。有关更多配置提示,请查看this chapter 中的最新几点和屏幕。我并不是要暗示 Eclipse 不好,更重要的是,我自己使用它。但尤其是使用 EL(表达式语言,那些 #{} 的东西)验证时,它可能会造成严重破坏。我只是关闭或降低这些验证。
    • 啊好吧-好点!好吧,我想我不会再做任何 JSF 了,因为我的项目已经完成了。 :P
    猜你喜欢
    • 1970-01-01
    • 2018-07-02
    • 1970-01-01
    • 2014-11-01
    • 2014-12-28
    • 2013-12-22
    • 2015-03-29
    • 2019-12-11
    • 2019-05-09
    相关资源
    最近更新 更多