[英]JSF (and PrimeFaces) How to pass parameter to a method in ManagedBean
[英]How to correctly call method from jsf to ManagedBean
我正在學習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
對象,只是它的屬性該如何進行?
您將獲得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()
方法將組裝實例並最終調用您的persist-method。
<h:commandButton class="btn" action="#{ciclistaBeanDB.save}" value="Create" />
通常,您不應該直接調用DatabaseBean
,而應該是一種Controller
-或人們希望如何調用它。 然后,這個Bean應該利用您的數據庫服務,該服務僅負責CRUD功能。
至少對於大型應用程序而言,將數據庫方法和其他(與視圖相關的)方法混合在一類中將是一團糟。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.