【问题标题】:How to correctly call method from jsf to ManagedBean如何正确从 jsf 调用方法到 ManagedBean
【发布时间】:2014-11-12 01:59:42
【问题描述】:

嗯,我正在学习 jsf/hibernate,但我无法理解如何正确调用我的 ManagedBean 的方法 它是一个简单的 CRUD,所以我需要通过 jsf 形式传递 Ciclista 对象,但由于输入是 Ciclista 属性,我该如何传递对象? (如何创建它的实例)这是代码:

@Override
public String create(Ciclista c) {
    Session s = sFac.openSession();
    s.beginTransaction();
    s.save(c);
    s.getTransaction().commit();
    s.close();
    return "Administrador?faces-redirect=true";
}

和jsf形式:

   <h:form class="form">
        <div id="input-wrapper">
            <h:inputText class="inputs" value="#{ciclistaBeanDB.nombre}" />
            <h:inputText class="inputs" value="#{ciclistaBeanDB.nacionalidad}" />
            <h:inputText class="inputs" value="#{ciclistaBeanDB.equipo}" />
        </div>
        <h:commandButton class="btn" action="#{ciclistaBeanDB.create()}" value="Create" />
   </h:form>

我收到错误:找不到方法,因为我没有在 crear(//here) 中传递 Ciclista c 对象 因为我没有对象本身,只有它的属性我该如何进行??

【问题讨论】:

    标签: java hibernate jsf


    【解决方案1】:

    你得到了MethodNotFoundException,因为你写的是crear而不是Create

    但正确的做法是调用不带参数的save() 方法,该方法负责组装您想要持久化的对象。

    由于您已经将输入字段绑定到 bean 属性,您需要做的就是使用如下方法:

    public String save(){
       Ciclista c = new Ciclista();
       c.setNombre(this.nombre);
       c.setNacionalidad(this.nacionalidad);
       c.setEquipo(this.equipo);
    
       create(c);
       return "Administrador?faces-redirect=true";
    }
    

    您的命令按钮现在应该针对您的 bean 的 save() 方法。表单中的输入值将插入到您的烘焙 bean 属性中,save() 方法将组装实例并最终调用您的持久方法。

    <h:commandButton class="btn" action="#{ciclistaBeanDB.save}" value="Create" />
    

    通常你不应该直接调用DatabaseBean,而是一种Controller - 或者你想怎么称呼它。然后这个 Bean 应该利用你的数据库服务,它应该只负责 CRUD-Functionality。

    至少对于大型应用程序而言,将数据库方法和其他(与视图相关的)方法混合在一个类中会是一团糟。

    【讨论】:

    • 呵呵实际上错误在这里是一个拼写错误,但在实际文件中方法是正确的,但是谢谢你这解决了我的问题,我知道这可能与Dependency Injection有关吗?你知道我可以学习这个的链接吗?
    猜你喜欢
    • 2015-01-21
    • 2017-10-10
    • 2012-12-18
    • 2015-02-11
    • 2012-08-08
    • 2014-08-29
    • 2011-04-12
    • 2013-05-13
    • 2013-06-18
    相关资源
    最近更新 更多