Java “选择一个”菜单未将所选值设置为“后端”
嗨,我在尝试从selectOneMenu组件中选择一个值时遇到了一个问题。我使用的是PrimeFaces5和JSF2 我有一个对象列表显示在SelectOne菜单中,当一个对象被选中时,一个后端变量(具有相同类型的对象)将显示该值。但是当我更改selectOneMenu中的值时,什么也没有发生,我的意思是不调用变量的setter方法 这是我的SelectOne菜单代码Java “选择一个”菜单未将所选值设置为“后端”,java,jsf,primefaces,Java,Jsf,Primefaces,嗨,我在尝试从selectOneMenu组件中选择一个值时遇到了一个问题。我使用的是PrimeFaces5和JSF2 我有一个对象列表显示在SelectOne菜单中,当一个对象被选中时,一个后端变量(具有相同类型的对象)将显示该值。但是当我更改selectOneMenu中的值时,什么也没有发生,我的意思是不调用变量的setter方法 这是我的SelectOne菜单代码 <p:selectOneMenu id="selectRepositorio" value="#{cadastro
<p:selectOneMenu id="selectRepositorio"
value="#{cadastroDocumentoControler.repositorio}">
<f:selectItems
value="#{cadastroDocumentoControler.items}" />
<p:ajax update="tree" event="change" />
</p:selectOneMenu>
接球手和二传手
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方法,我没有转换器,但是没有打印转换器错误,但是我创建了一个,但是仍然没有发生任何事情
我的转换器
@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();
}
}
最后,我在@SessionScope中处理了我的@ManagedBean
提前感谢您的时间和回答
p:selectOneMenu
中使用自定义转换器时,应始终覆盖所涉及对象的equals()方法。对于您来说,应该在repositorio类中重写equal()。这是override equal()方法的一个示例非常感谢IRepositorio解决了我的问题非常感谢
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;
}
@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();
}
}
@Override
public boolean equals(Object obj) {
if (obj == null)
return false;
if (!(obj instanceof IRepositorio))
return false;
return ((ReferenceData) obj).getCode().equals(this.code);
}