Mi problema consiste en que las llamadas a un archivo externo JavaScript desde onclick no me funcionan pero desde otros lados que no sea onclick ¡sí!, por ejemplo en la llamada a la función resaltada en rojo mas abajo "numbersOnly()" funciona (función escrita en el archivo js enlazado), pero las funciones desde el commandbutton o input button no, excepto la de confirm() que es una función predefinida.
alertar simplemente muestra un alert.
Código:
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:f="http://xmlns.jcp.org/jsf/core">
<h:head>
<title>
My first JSF Page
</title>
<script type="text/javascript" src="JavaScript/functions.js"></script>
</h:head>
<h:body>
<f:view>
<h:form id="form">
<br/>
<h:outputText value="Id"/>
<h:inputText onkeypress="return numbersOnly(event);" value="#{facade.registroencurso.id}" maxlength="11"/>
<br/>
<input type="button" value="prueba" onclick="alertar();"></input>
<h:dataTable border="1" value="#{facade.getListaPersonas()}" var="pform">
<h:column>
<f:facet name="header">
<h:outputText value="Id"/>
</f:facet>
<h:outputText value="#{pform.id}"/>
</h:column>
<h:column>
<f:facet name="header">
</f:facet>
<h:commandButton onclick="return confirm('¿Está seguro?');" value="Borrar" action="#{facade.destroy(pform.id)}"/>
</h:column>
</h:dataTable>
</h:form>
</f:view>
</h:body>
</html>
He simplificado el código original para mayor comodidad para resolver duda
En el archivo .js solo están las funciones a secas