【问题标题】:Unable to find matching navigation case with from-view-id [duplicate]无法找到与 from-view-id 匹配的导航案例 [重复]
【发布时间】:2013-04-17 16:24:49
【问题描述】:

我有一个控制器,在这个控制器中我从数据库中得到了一些结果

这是我得到结果的函数

 public DataModel getFts() {

        this.session = HibernateUtil.getSessionFactory().getCurrentSession();

        List<FinancialTransactions> ftList = null;
        try {
            org.hibernate.Transaction tx = session.beginTransaction();
            Query q = session.createQuery("from FinancialTransactions where Date='" + beginDate + "'");
            ftList = (List<FinancialTransactions>) q.list();
        } catch (Exception e) {
            e.printStackTrace();
        }

        return ftDataModel = new ListDataModel(ftList);
    }

这个控制器的名字是 ftController

在jsf中

   <h:form styleClass="jsfcrud_list_form">
                <h:dataTable value="#{ftController.ftDataModel}" var="item" border="0" cellpadding="2" cellspacing="0" rowClasses="jsfcrud_odd_row,jsfcrud_even_row" rules="all" style="border:solid 1px">
                    <h:column>
                        <f:facet name="header">
                            <h:outputText value="Title"/>
                        </f:facet>
                        <h:outputText value="#{item.id}"/>
                    </h:column>
                </h:dataTable>
                <br/>
                 <h:commandButton type="submit" action="#{ftController. getFts()}"  id="searchButton"  value="Search"  />
            </h:form>

我有上面的代码。这个jsf的名字是financialTransactions,但它给出了以下错误:

Unable to find matching navigation case with from-view-id '/financialTransactions.xhtml' for action '#{ftController. getFts()}' with outcome 'javax.faces.model.ListDataModel@32ee7cee'

怎么了?

【问题讨论】:

    标签: java jsf


    【解决方案1】:

    基本上,JSF 期望 导航结果 作为方法返回。您必须在 JSF 中区分 getter 和 action 方法。

    • getter 返回一些内容以显示在您实际所在的页面中 渲染。

    • 一个动作方法可以在你的 bean 中执行一些动作并返回一个
      导航结果为String,或者void,如果您想保留当前页面,则为空String

    您将 getter 方法作为操作方法调用,JSF 希望您返回导航结果,但它找到了一个 javax.faces.model.ListDataModel 对象。

    查看更多关于implicit navigation in JSF 2的信息。

    看起来你想要的是加载一个考虑搜索参数的列表。那么你可以做的是调用一个真正的动作方法:

    <h:commandButton value="Search" action="#{ftController.loadFts}" />
    

    loadFts 方法将在您的列表中加载搜索结果。

    【讨论】:

      【解决方案2】:

      在 commandButton 的 action 属性中,需要返回导航字符串,可能是逻辑结果字符串或隐式导航字符串(直接是您要导航到的下一页的名称)。 但是在这里,您的操作方法返回一个DataModel 对象,其toString() 对JSF 的导航模型没有任何意义。提供您要导航到的 JSF 文件的名称。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-07-21
        • 1970-01-01
        • 2017-01-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多