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