Olá pessoal,
Não sei se vcs ja passaram por algo parecido, mas hoje eu tenho um projeto usando o Jboss Seam. (+ JBoss AS 4.2+ EJB + JSF)
E estou tendo um probleminha com a questao da minha pagina JSF acessar minha classe EntityHome no momento de acessar um metodo que eu criei. ( os metodos de EntityHome como persist, updated, remove… funcionam normalmente )
ex.:
minha pagina
... ( info antes)
<rich:panel>
<f:facet name="header">Recurso</f:facet>
<s:decorate id="tipoRecursoDecoration" template="layout/edit.xhtml">
<ui:define name="label">Tipo Recurso</ui:define>
<h:selectOneMenu id="tipoRecurso" value="#{recursoHome.instance.tipoRecurso}" required="true">
<s:selectItems
value="#{tipoRecursoList.resultList}"
var="tipoRecurso"
label="#{tipoRecurso.nome}"/>
<s:convertEntity/>
</h:selectOneMenu>
</s:decorate>
<s:decorate id="descricaoDecoration" template="layout/edit.xhtml">
<ui:define name="label">Descrição</ui:define>
<h:inputText value="#{recursoHome.instance.descricao}" required="true" id="text"/>
<rich:suggestionbox id="suggestionBoxRecurso"
var="recurso"
for="text"
fetchValue="#{recursoHome.instance.descricao}"
suggestionAction="#{recursoHome.autocomplete}"
minChars="4"
height="50"
width="250">
<h:column>
<h:outputText value="#{recurso.descricao}" />
</h:column>
</rich:suggestionbox>
</s:decorate>
<div style="clear:both"/>
</rich:panel>
... (info depois )
minha classe RecursoHome
@Name("recursoHome")
public class RecursoHome extends EntityHome<Recurso> {
private static final long serialVersionUID = 1L;
@RequestParameter
Long recursoId;
@Override
public Object getId()
{
if (recursoId==null)
{
return super.getId();
}
else
{
return recursoId;
}
}
@Override
@Begin(join=true)
public void create() {
super.create();
}
@SuppressWarnings("unchecked")
public List<Recurso> autocomplete(Object text){
return getEntityManager().createQuery("select recurso from Recurso recurso " +
"WHERE recurso.descricao LIKE '%"+text+"%'").getResultList();
}
}
Os metodos que existem em EntityHome e Home ( classes do Seam ), como o persist(), remove(), update() eu posso chamar normalmente na interface que ele executa tranquilo
<h:commandButton id="save"
value="Cadastrar"
action="#{recursoHome.persist}"
rendered="#{!recursoHome.managed}"/>
executam normalmente…
mas quando eu tento executar um metodo que eu adicionei
suggestionAction="#{recursoHome.autocomplete}"
como o autocomplete ele diz que nao encontrou o metodo (da o seguinte erro):
Exception during request processing:
Caused by javax.servlet.ServletException with message: "/recurso.xhtml @41,30 suggestionAction="#{recursoHome.autocomplete}": Method not found: [email removido](java.lang.Object)"
Alguem sabe me dizer o que pode ser ?