2
大家好我試圖從selectOneMenu組件中選擇一個值。我使用的是primefaces 5和jsf 2選擇一個菜單未將所選值設置爲後端
我有一個selectOneMenu中顯示的對象列表,當選擇一個對象時,後端變量(具有相同類型的對象)應該注意該值。但是當我改變selectOneMenu中的值時,沒有任何反應,我的意思是變量的setter方法沒有被調用。
這是我selectOneMenu用於代碼
<p:selectOneMenu id="selectRepositorio"
value="#{cadastroDocumentoControler.repositorio}">
<f:selectItems
value="#{cadastroDocumentoControler.items}" />
<p:ajax update="tree" event="change" />
</p:selectOneMenu>
這是填充列表項get方法,和偉大工程,我可以看到 selectOneMenu用於所有元素
public List<SelectItem> getItems(){
listarRepositorios();
items.add(0, new SelectItem("", "choose one..."));
for(IRepositorio repositorio: repositorioList){
SelectItem si = new SelectItem(repositorio,repositorio.getNome());
items.add(si);
}
return items;
}
我repositorio變量,該變量應該選擇所選值
private IRepositorio repositorio = EntityBeanFactory.getRepositorio();
個getter和setter
public void setRepositorio(IRepositorio repositorio) {
this.repositorio = repositorio;
System.out.println("valor after execute setRepositorio: "+repositorio);
}
public IRepositorio getRepositorio() {
System.out.println("value in the method getRepositorio: "+repositorio);
return repositorio;
}
主要問題是setter方法不叫,我din't有一個轉換器,但沒有印刷的轉換器的錯誤,但我創建了一個,但還是沒有任何反應
我的轉換器
@FacesConverter(forClass=Repositorio.class)
public class RepositorioConverter implements Converter {
private IRepositorioDAO repositorioDAO = DAOFactory.getRepositorioDAO();
@Override
public Object getAsObject(FacesContext context, UIComponent component,
String idRepositorio) {
if (idRepositorio==null || idRepositorio.trim().length()==0) {
return null;
}
return repositorioDAO.find(Integer.parseInt(idRepositorio));
}
@Override
public String getAsString(FacesContext context, UIComponent component,
Object value) {
IRepositorio repositorio = (IRepositorio) value;
Integer id = repositorio.getId();
return id.toString();
}
}
最後我有我的@ManagedBean在@SessionScoped
預先感謝您的時間和答案
非常感謝的IRepositorio和
代替解決我的問題非常感謝 – 2014-09-26 15:03:45不客氣。 – wittakarn 2014-09-26 15:09:18