我有一个问题,在commandButton的onccess上我有一个获取字符串参数的javascript函数但是当我看到生成的DOM时,任何参数都被传递,所以我的函数返回一个未定义引用的异常:
我的xhtml:
<h:head>
<h:outputScript library="js" name="jsfcrud.js" target="body" />
<h:outputScript name="jquery/jquery.js" library="primefaces" target="head" />
<h:outputScript name="jquery/jquery-plugins.js" library="primefaces" target="head" />
<h:outputStylesheet library="css" name="jsfcrud.css"/>
</h:head>
<h:body>
<div id="cabezote" class="container">
<div class="row">
<div class="col-xs-6 logo">
<img src="http://aprende.colombiaaprende.edu.co/sites/all/themes/aprende/images/h_logo_2.png" alt="" />
</div>
<div class="col-xs-6 titulo">
<h1>Foro de Educación Nacional 2016</h1>
</div>
</div>
</div>
<b:container>
<b:row>
<h:form id="formulario-registro">
<p:wizard flowListener="#{RegistroBean.onFlowProcess}" backLabel="Anterior" nextLabel="Siguiente" id="wizard-flow">
<p:tab title="Registro" id="personal-tab">
<p:panel header="Datos personales:" id="personal-panel">
<p:messages id="messages-personal"/>
<h:panelGrid columns="2" id="grid-personal" columnClasses="label, value">
<h:outputText styleClass="label-form requ" value="Nombres:" />
<p:inputText required="true" label="Nombres" value="#{RegistroBean.user.nombres}"/>
<h:outputText styleClass="label-form requ" value="Apellidos:" />
<p:inputText required="true" label="Apellidos" value="#{RegistroBean.user.apellidos}"/>
<h:outputText styleClass="label-form requ" value="Tipo de documento:" />
<p:selectOneMenu id="console" value="#{RegistroBean.user.tipoDocumento}">
<f:selectItem itemLabel="CC" itemValue="CC" />
<f:selectItem itemLabel="CE" itemValue="CE" />
<f:selectItem itemLabel="PASAPORTE" itemValue="PS" />
</p:selectOneMenu>
<h:outputText styleClass="label-form requ" value="Numero de documento:" />
<p:inputText required="true" label="Numero de documento" value="#{RegistroBean.user.numeroDocumento}"/>
<h:outputText styleClass="label-form requ" value="Correo:" />
<p:inputText required="true" size="80" value="#{RegistroBean.user.correo}" style="width: 40%"
requiredMessage="Valor requerido" label="Correo"
validatorMessage="Formato de email invalido">
<f:validateRegex pattern="[\w\.-]*[a-zA-Z0-9_]@[\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]" />
</p:inputText>
<h:outputText styleClass="label-form requ" value="Telefono:" />
<p:inputText value="#{RegistroBean.user.telefono}"/>
</h:panelGrid>
</p:panel>
</p:tab>
<p:tab id="institucion" title="Institución">
<p:panel header="Datos de institución" id="institucion-panel">
<p:messages id="institucion-messages"/>
<h:panelGrid id="institucion-grid" columns="2" columnClasses="label, value">
<h:outputText styleClass="label-form requ" value="Nombres de la institucion:" />
<p:inputText required="true" label="Nombre institucion" value="#{RegistroBean.institucion.nombre}"/>
<h:outputText styleClass="label-form requ" value="Direccion: " />
<p:inputText required="false" label="Direccion institucion" value="#{RegistroBean.institucion.direccion}"/>
<h:outputText styleClass="label-form requ" value="Ciudad: " />
<p:inputText required="false" label="Direccion institucion" value="#{RegistroBean.institucion.ciudad}"/>
</h:panelGrid>
</p:panel>
</p:tab>
<c:forEach items="#{RegistroBean.daysWithEvent}" var="day">
<p:tab title="Programacion: #{day}">
<p:panel header="Mañana" toggleable="true" collapsed="false" styleClass="panel-fecha" rendered="#{RegistroBean.hasAm(RegistroBean.findByDate(day))}">
<p:dataGrid var="ejecucion" value="#{RegistroBean.findByDate(day)}" emptyMessage="No hay talleres en la mañana" columns="2" layout="grid"
rows="12" paginator="false" styleClass="grid-data-fecha">
<p:panel id="panel-fecha" styleClass="#{RegistroBean.comprobeIsAm(ejecucion.horaInicio) ? 'amEvent':'pmEvent'}" rendered="#{RegistroBean.comprobeIsAm(ejecucion.horaInicio)}" style="text-align:center" >
<p:panel id="contenedor-ejecucion">
<h:panelGrid columns="2" style="width:100%" id="ejecucion-taller-grid">
<h:outputText style=" font-weight: bold" value="Hora inicio: " styleClass="table-important"/>
<h:outputText style=" font-weight: bold" value="#{ejecucion.horaInicio}" />
<h:outputText value="Taller: " styleClass="table-important"/>
<h:outputText value="#{ejecucion.tallerIdTaller.nombre}" />
<h:outputText value="Ponente: " styleClass="table-important"/>
<h:outputText value="#{ejecucion.tallerIdTaller.ponente.nombres} #{ejecucion.tallerIdTaller.ponente.apellidos}" />
<h:outputText value="Lugar " styleClass="table-important"/>
<h:outputText value="#{ejecucion.locacionEspecificaIdlocacionEspecifica.sitioIdSitio.nombre} - #{ejecucion.locacionEspecificaIdlocacionEspecifica.nombre}" />
<h:outputText value="Cupo: " styleClass="table-important"/>
<h:outputText value="#{ejecucion.cupo}" />
</h:panelGrid>
</p:panel>
<p:commandButton widgetVar="ejecucion#{ejecucion.idEjecucionTaller}" onsuccess="inactivarJornada('ejecucion#{ejecucion.idEjecucionTaller}')" ajax="true" actionListener="#{RegistroBean.asistir(ejecucion)}" update="@(.asistirButton)" styleClass="asistirButton" value="#{RegistroBean.isInPlanner(ejecucion)?'Cancelar Asistencia':'Asistir'}" disabled="#{ejecucion.cupo_disponible == 0}"/>
<div id="reference" class=""></div>
</p:panel>
</p:dataGrid>
</p:panel>
<p:panel header="Tarde" toggleable="true" collapsed="false" styleClass="panel-fecha" rendered="#{RegistroBean.hasPm(RegistroBean.findByDate(day))}">
<p:dataGrid var="ejecucion" value="#{RegistroBean.findByDate(day)}" columns="2" emptyMessage="No hay talleres en la tarde" layout="grid"
rows="12" paginator="false" styleClass="grid-data-fecha">
<p:panel id="panel-fecha" styleClass="#{RegistroBean.comprobeIsAm(ejecucion.horaInicio) ? 'amEvent':'pmEvent'}" rendered="#{!RegistroBean.comprobeIsAm(ejecucion.horaInicio)}" style="text-align:center" >
<p:panel id="contenedor-ejecucion">
<h:panelGrid columns="2" style="width:100%" id="ejecucion-taller-grid">
<h:outputText style=" font-weight: bold" value="Hora inicio: " styleClass="table-important"/>
<h:outputText style=" font-weight: bold" value="#{ejecucion.horaInicio}" />
<h:outputText value="Taller: " styleClass="table-important"/>
<h:outputText value="#{ejecucion.tallerIdTaller.nombre}" />
<h:outputText value="Ponente: " styleClass="table-important"/>
<h:outputText value="#{ejecucion.tallerIdTaller.ponente.nombres} #{ejecucion.tallerIdTaller.ponente.apellidos}" />
<h:outputText value="Lugar " styleClass="table-important"/>
<h:outputText value="#{ejecucion.locacionEspecificaIdlocacionEspecifica.sitioIdSitio.nombre} - #{ejecucion.locacionEspecificaIdlocacionEspecifica.nombre}" />
<h:outputText value="Cupo: " styleClass="table-important"/>
<h:outputText value="#{ejecucion.cupo}" />
</h:panelGrid>
</p:panel>
<p:commandButton widgetVar="ejecucion#{ejecucion.idEjecucionTaller}" onsuccess="inactivarJornada()" ajax="true" actionListener="#{RegistroBean.asistir(ejecucion)}" update="@(.asistirButton)" styleClass="asistirButton" value="#{RegistroBean.isInPlanner(ejecucion)?'Cancelar Asistencia':'Asistir'}" disabled="#{ejecucion.cupo_disponible == 0}"/>
</p:panel>
</p:dataGrid>
</p:panel>
</p:tab>
</c:forEach>
<p:tab id="confirmacion" title="Confirmación">
<p:messages id="confirmacion-messages"/>
<p:dialog header="Info" widgetVar="successDialog" id="successDialog" minHeight="40" closable="false">
<h:outputText id="info-modal" value="Registro exitoso! ya estas confirmado como asistente a los eventos que seleccionaste" />
<p:button value="Aceptar" outcome="registro.xhtml"></p:button>
</p:dialog>
<p:panel header="CONFIRMACIÓN">
<h:outputText id="info-confirmacion" value="
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Aliquam euismod faucibus nibh, vel fringilla ex euismod ac.
Praesent maximus pellentesque enim. Maecenas quis mattis orci,
quis tempor est. Morbi ut gravida felis. Vestibulum non nisi nec
massa sagittis lobortis. Donec sagittis libero ut tellus dictum varius.
Curabitur semper dictum tincidunt. Aliquam erat volutpat. Sed turpis turpis,
ullamcorper in lorem ut, euismod interdum dui. Sed et nulla laoreet, placerat
tortor at, venenatis purus. Mauris quis velit bibendum, sollicitudin libero in,
aliquam nisi. Suspendisse potenti.">
</h:outputText>
<h:panelGrid columns="2" id="mailing-confirmation">
<h:outputText id="mailing-confirmation-desc" value="Deseo recibir un correo con la confirmacion de mi horario"/>
<p:selectBooleanCheckbox id="checkbox-mailing" value="#{RegistroBean.mailConfirm}"/>
</h:panelGrid>
<p:commandButton id="submit-button" value="Enviar" process="@form" update="@form" action="#{RegistroBean.savePlanner()}"/>
</p:panel>
</p:tab>
</p:wizard>
</h:form>
</b:row>
</b:container>
</h:body>
这是生成的对应html:
我的javascript函数:
function inactivarJornada(widgetVar) {
var currentObject = PrimeFaces.widgets["ejecucion"+widgetVar].jq
var currentId = PrimeFaces.escapeClientId(currentObject.attr("id"));
var jornadaContainer = currentObject.parent().parent();
var currentJornada = jornadaContainer.hasClass("amEvent") ? "amEvent" : "pmEvent";
jornadaContainer.parent().find("." + currentJornada).each(function () {
if (PrimeFaces.escapeClientId(jQuery(this).attr("id")) != currentId) {
currentJornada.parent().css({"display": "none"});
}
})
}
注意: 当按钮调用返回&#34;未定义的函数&#34;时,我无法使函数将函数放在$(document).ready(function(){})中。并且我必须通过widget var找到元素,因为当我尝试在函数内部获取$(this)时返回窗口对象,如果有人知道请如何帮助我:(!