Jsf 为什么我在primefaces上得到无效值?
我正在尝试做一个类似于中的级联组合,它可以完美地工作,直到我点击我的提交按钮,然后我得到消息“validation error the value is invalid”,并且只有在我同时选择两个组合时才会发生。 以下是我的看法:Jsf 为什么我在primefaces上得到无效值?,jsf,jsf-2,primefaces,Jsf,Jsf 2,Primefaces,我正在尝试做一个类似于中的级联组合,它可以完美地工作,直到我点击我的提交按钮,然后我得到消息“validation error the value is invalid”,并且只有在我同时选择两个组合时才会发生。 以下是我的看法: <h:form id="agregarGestor"> <p:growl id="growl2" showDetail="true" /> <table id="display"> <tr>
<h:form id="agregarGestor">
<p:growl id="growl2" showDetail="true" />
<table id="display">
<tr>
<td><h:outputText value="Originador:" /></td>
<td>
<p:selectOneMenu id="originador" value="#{gestorMB.originador}">
<f:selectItem itemLabel="Selecciona Originador" itemValue="" />
<f:selectItems value="#{gestorMB.originadores}" />
<p:ajax update="mensajeria" listener="#{gestorMB.handleOriginadorChange}" />
</p:selectOneMenu>
</td>
<td><h:outputText value="Mensajeria:" /></td>
<td>
<p:selectOneMenu id="mensajeria" value="#{gestorMB.mensajeria}">
<f:selectItem itemLabel="Selecciona Mensajeria" itemValue="" />
<f:selectItems value="#{gestorMB.mensajerias}" />
</p:selectOneMenu>
</td>
</tr>
<tr>
<td>
<p:commandButton value="Guardar" update="growl2 :gestorForm:gestoresTable" action="#{gestorMB.agregarGestor}"/>
</td>
</tr>
</table>
</h:form>
这是我的托管bean
private List<OriginadorDTO> listOriginadoresDTO;
private Map<String,String> originadores = new HashMap<String, String>();
private String originador;
private List<MensajeriaDTO> listMensajeriasDTO;
private Map<String, String> mensajerias = new HashMap<String, String>();
private String mensajeria;
public void handleOriginadorChange() {
try {
populateMensajerias(originador);
} catch (ServiceException ex) {
Logger.getLogger(GestoresManagedBean.class.getName()).log(Level.SEVERE, null, ex);
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "ERROR",
"Ocurrió un error al seleccionar un originador."));
}
}
public void agregarGestor() {
try {
if (idNivel != 4) {
System.out.println("mensajeria: " + mensajeria);
getGestor().setIdSupervisor(new Integer("" + mensajeria));
} else {
getGestor().setIdSupervisor(idSupervisor);
}
/*service.addGestor(getGestor());
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.FACES_MESSAGES,
"Exito al agregar el gestor: " + getGestor().getNombre()));
populateGestores();*/
} catch (Exception e) {
Logger.getLogger(GestoresManagedBean.class.getName()).log(Level.SEVERE, null, e);
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "ERROR",
"Ocurrió un error al agregarW el gestor."));
}
}
private List listOriginadoresDTO;
private Map originadores=新HashMap();
私人弦乐原创者;
私有列表列表mensajerisdto;
私有映射mensajerias=newhashmap();
私人字符串门萨杰里;
公共无效handleOriginadorChange(){
试一试{
普罗泰曼萨杰里亚斯(原始人);
}捕获(ServiceException ex){
Logger.getLogger(GestoresManagedBean.class.getName()).log(Level.SEVERE,null,ex);
FacesContext.getCurrentInstance().addMessage(空,新的FacesMessage(FacesMessage.SEVERITY_错误,“ERROR”,
“原创性选择的错误。”);
}
}
公共无效agregarGestor(){
试一试{
如果(idNivel!=4){
System.out.println(“mensajeria:+mensajeria”);
getGestor().setIdSupervisor(新整数(“+mensajeria”);
}否则{
getGestor().setIdSupervisor(idSupervisor);
}
/*addGestor(getGestor());
FacesContext.getCurrentInstance().addMessage(空,新FacesMessage(FacesMessage.FACES_消息,
“Exito al-agregar el-Gester:”+GetGester().getNombre());
populateGestores();*/
}捕获(例外e){
Logger.getLogger(GestoresManagedBean.class.getName()).log(Level.SEVERE,null,e);
FacesContext.getCurrentInstance().addMessage(空,新的FacesMessage(FacesMessage.SEVERITY_错误,“ERROR”,
“犯了错误的人。”);
}
}
有人知道为什么我在不使用验证的情况下会出现验证错误吗???
提前感谢。尝试
process=@这个commandbutton
中的可以工作,但是现在当我在Agregorgestor()中打印变量gestorMB.mensajeria时,我在变量gestorMB.mensajeria中得到了空指针异常。为什么?我看到了System.out.println(“test”)代码>在上述方法中。我没有看到你打印任何变量扫描你粘贴你的populateMensajerias方法的代码请?JSF检查你当前选择的值在你提交表单时是否保留在选择的可能值中。可能它没有在那里找到它,所以你得到了那个错误。检查MensajeriaDTO
的equals()
和hashCode()
方法是否正确实现。