Componente de Consulta Facelets

0 respostas
V

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  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(){
	}
Criado 28 de setembro de 2010
Respostas 0
Participantes 1