Olá pessoal,
Estou precisando criar um componente para as páginas da aplicação que estou desenvolvendo um componente de consulta.
Este componente seria composto desta forma:
h:outputLabel -> Label do campo (ex: “Cliente”);
a4j:status -> Irá sinalizar ao usuário que há uma operação de atualização em andamento;
rich:message -> Para exibir as mensagens de validação do meu componente;
h:inputText -> Para entrada do valor do campo, o atributo value deste campo será sempre um objeto que será convertido através da implementação de um converter (ex.: bean.cliente).
a4j:commandButton -> Deverá chamar um formulário de consulta com uma lista de objetos válidos para o atributo value do inputText.
h:outputText -> Vai exibir um display para o value do inputText (ex.: bean.cliente.razaoSocial).
Para a consulta eu pretendo usar um rich:modalPanel.
Dado o cenário acima, eu montei o seguinte componente:
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:a4j="http://richfaces.org/a4j"
xmlns:rich="http://richfaces.org/rich">
<ui:component>
<style>
.colButton {
width: 20px;
padding-left: 0px;
padding-right: 5px;
margin-left: 0px;
}
.colInput {
width: 70px;
padding-right: 0px;
margin-right: 0px;
}
.button {
cursor: pointer;
padding-left: 0px;
margin-left: 0px;
vertical-align: middle;
width: 16px;
height: 16px
}
</style>
<h:panelGrid columns="3" border="0" cellspacing="0" cellpadding="0"
columnClasses="colLabel, colStatus, colMessage" width="300px">
<h:outputLabel for="#{id}" id="#{id}Label" value="#{label}" />
<a4j:status id="status#{id}" forceId="true" startText="Atualizando"
stopText="" />
<rich:message for="#{id}">
<f:facet name="errorMarker">
<h:graphicImage value="../img/erro.gif" />
</f:facet>
</rich:message>
</h:panelGrid>
<h:panelGrid columns="3" columnClasses="colInput, colButton, colOutput"
border="0" cellspacing="0" cellpadding="0" width="300px">
<h:inputText id="#{id}" value="#{value}" required="#{required}"
style="width : 70px;" styleClass="inputText">
<f:converter converterId="#{converterId}" />
<a4j:support event="onchange" reRender="display#{id}"
status="status#{id}" />
</h:inputText>
<a4j:commandButton id="btn#{id}" action="#{actionButton}" image="/img/edit.gif"
styleClass="button" reRender="#{id}, display#{id}"/>
<h:outputText id="display#{id}" value="#{valueDisplay}" />
</h:panelGrid>
</ui:component>
</html>
O componente está renderizando certinho, mas quando clico no botão ocorre o erro abaixo:
javax.servlet.ServletException: #{actionButton}: javax.el.PropertyNotFoundException: /WEB-INF/facelets/tags/inputBtnDisplay.xhtml @51,56 action="#{actionButton}": /pages/pedido.xhtml @47,60 actionButton="#{pedido.testeAction}": Property 'testeAction' not found on type sistema.web.mbean.PedidoMB
javax.faces.webapp.FacesServlet.service(FacesServlet.java:277)
org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:206)
org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:388)
org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:515)
sendo que testeAction é um método do meu managed bean:
public void testeAction(){
}