我有一个HIBERNATE DAOImpl使用以下方法,将变量作为参数传递..
public List<Oportunidad> verParticipantes(String numeroOportunidad) throws DAOException {
List<Oportunidad> lista = getHibernateTemplate().find("SELECT c.cliente FROM Oportunidad o ,OportunidadParticipante op,"
+ "Cliente c WHERE op.oportunidad=o.id and c.idCliente=op.cliente and o.numeroOportunidad=?",numeroOportunidad);
return lista;
}
和ServiceImpl
public List<Oportunidad> verParticipantes(String numeroOportunidad)throws DAOException {
return getOportunidadDao().verParticipantes(numeroOportunidad);
}
这两个接口都使用了。 这些编译运行时junit进行测试。 Goog,非常好
问题是,当我想从selectOneListboxt传递参数时实现了一个JSF primefaces
代码ManagedBean:
public String getVerParticipantes(String numeroOportunidad) throws DAOException{
Oportunidad o = new Oportunidad();
o.setNumeroOportunidad(numeroOportunidad);
verParticipantes.addAll(getOportunidadService().verParticipantes(numeroOportunidad));
return "envioCotizacion.xhtml";
}
JSF代码(.xhtml):
<p:selectOneListbox id="listaCliente" value="#{clienteMB.cliente}" style="width:26%; height:90%; position:absolute; top:10%; left:12%;">
<f:selectItems value='#{oportunidadMB.verParticipantes("prueba")}'/>
<!-- <f:param name="numeroOportunidad" value="prueba" />-->
<p:ajax id="numeroOportunidad" listener='#{oportunidadMB.verParticipantes("prueba")}'></p:ajax>
</p:selectOneListbox>
错误屏幕:::::::::
javax.el.MethodNotFoundException: Unable to find method [verParticipantes] with [1] parameters
at javax.el.BeanELResolver.invoke(BeanELResolver.java:444)
at javax.el.CompositeELResolver.invoke(CompositeELResolver.java:161)
at org.apache.el.parser.AstValue.getValue(AstValue.java:173)
at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:185)
at com.sun.faces.facelets.el.TagValueExpression.getValue(TagValueExpression.java:109)
at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:194)
at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:182)
at javax.faces.component.UISelectItems.getValue(UISelectItems.java:129)
at org.primefaces.renderkit.InputRenderer.getSelectItems(InputRenderer.java:55)
at org.primefaces.component.selectonelistbox.SelectOneListboxRenderer.encodeMarkup(SelectOneListboxRenderer.java:49)
at org.primefaces.component.selectonelistbox.SelectOneListboxRenderer.encodeEnd(SelectOneListboxRenderer.java:42)
at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:924)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1863)
at javax.faces.render.Renderer.encodeChildren(Renderer.java:176)
at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:894)
at org.primefaces.renderkit.CoreRenderer.renderChild(CoreRenderer.java:70)
at org.primefaces.renderkit.CoreRenderer.renderChildren(CoreRenderer.java:57)
at org.primefaces.component.layout.LayoutUnitRenderer.encodeEnd(LayoutUnitRenderer.java:51)
at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:924)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1863)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1859)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1859)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1859)
at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:443)
at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:131)
帮助我plis ......不再与此错误有关。
答案 0 :(得分:0)
将方法名称getVerParticipantes
更改为verParticipantes
。监听器方法不需要是getter。
此外,您不能将侦听器视为一个动作,因此它应该是返回类型的void,例如
public void getVerParticipantes(String numeroOportunidad) throws DAOException{
Oportunidad o = new Oportunidad();
o.setNumeroOportunidad(numeroOportunidad);
verParticipantes.addAll(getOportunidadService().verParticipantes(numeroOportunidad));
//if you want to navigate then do here dynamically.
}
答案 1 :(得分:0)
<f:selectItems value='#{oportunidadMB.verParticipantes("prueba")}'...
应该是
<f:selectItems value='#{oportunidadMB.getVerParticipantes("prueba")}'...
但 getVerParticipantes也应该返回一个不是String的列表!
public List<Oportunidad> verParticipantes(String numeroOportunidad)throws DAOException
在服务中声明但是管理oportunidadMB只有方法getVerParticipantes返回一个字符串而不是列表,所以你怎么能调用
value='#{oportunidadMB.verParticipantes("prueba")}'