Javascript não funciona dentro de uma tag criada com jsf 2

Pessoal, estou tentando criar uma taglib para um campo que só aceita números com JSF. Entretanto, ao digitar neste campo, o javascript que estou chamando não é renderizado no HTML que é enviado para o navegador. Alguém sabe o porque e poderia me ajudar?

<?xml version="1.0" encoding="UTF-8"?>


<ui:composition 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:p="http://primefaces.org/ui"	
	xmlns:c="http://java.sun.com/jsp/jstl/core"
	xmlns:rich="http://richfaces.org/rich">

		<script type="text/javascript" >
			//<![CDATA[
				function validarTeste#{id}(event)
				{ 
					var tecla=(window.event)?event.keyCode:event.which;

					if ((tecla > 47 && tecla < 58)) || (tecla == 46) || (tecla == 13 ) || (tecla == 8))
					{ 
								return true;
					}

					return false; 
				}
			// ]]>				
		</script>
	

	<h:panelGroup id="painelCampoNumerico#{id}" style="display:block;margin:5px;">
		
		<h:inputText class="numeric" id="idCampo#{id}" name="idCampo#{id}" value="#{valor}" size="#{size}" maxlength="#{maxlength}" styleClass="#{styleClass}" disabled="#{disabled}" readonly="#{readonly}"
			onkeypress="javascript:validarTeste#{id}(event)">
		</h:inputText>

	</h:panelGroup>
		
</ui:composition>

tenta colocar esse javascript no seu template principal com valor fixo ou em algum arquivo .js, nao entendi o pq criar ele com nomes dinâmicos no validarTeste#{id}, coloca só validarTeste()

tipo se usar na sua tela 20 vezes o componente vai ter 20 partes de código javascript que fazem a mesma coisa com id diferente?