0

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

这是我得到结果的功能

 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'

怎么了?

4

2 回答 2

0

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

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

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

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

查看更多关于JSF 2 中的隐式导航的信息。

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

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

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

于 2013-04-17T20:23:17.270 回答
0

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

于 2014-07-05T08:43:05.693 回答