2016-07-21 22 views
0

Eine der Seiten aus meiner Anwendung hat eine selectOneMenu-Komponente mit einem Ajax-Ereignis, das nicht ausgelöst wird. Ich habe ähnliche Seiten mit ähnlichen Komponenten, die wie erwartet funktionieren. Ein Beispiel, das funktioniert:Ajax-Ereignis wird nicht aufgerufen

<h:selectOneMenu value="#{debugParam.debugLevelBusiness}" 
    id="debugLevelBusiness" 
    rendered="#{not (debugParam.debugLevelBusiness eq 'DEPEN')}" 
    styleClass="form-control #{debugParam.debugLevelBusiness}"> 
    <f:selectItems value="#{manager.logLevels}" /> 
    <f:ajax execute="@this" listener="#{loggingBean.businessValueChangeListener(debugParam)}" /> 
</h:selectOneMenu> 

Erzeugt das folgende Element:

<select id="transactionalParameters:0:debugLevelBusiness" name="transactionalParameters:0:debugLevelBusiness" class="form-control DEBUG" size="1" 
onchange="mojarra.ab(this,event,'valueChange','@this',0)"> 
       <option value="OFF">OFF</option> 
       <option value="ERROR">ERROR</option> 
       <option value="WARN">WARN</option> 
       <option value="INFO">INFO</option> 
       <option value="DEBUG" selected="selected">DEBUG</option> 
</select> 

Die Komponente, die nicht funktioniert:

<h:selectOneMenu value="#{parameter.epmsEventsLogState}"  
    id="epmsEventsLogState" 
    styleClass="form-control #{parameter.epmsEventsLogState}"> 
    <f:selectItem itemLabel="#{labels.enabled}" itemValue="E" /> 
    <f:selectItem itemLabel="#{labels.disabled}" itemValue="D" /> 
    <f:ajax execute="@this" listener="#{eventsLogBean.valueChangeListener(parameter)}" /> 
</h:selectOneMenu> 

Erzeugt das folgende Element:

<select id="parameters:19:epmsEventsLogState" name="parameters:19:epmsEventsLogState" size="1" 
    onchange="jsf.ajax.request('parameters:19:epmsEventsLogState',event,{execute:'@this ','javax.faces.behavior.event':'valueChange'})" class="form-control E">    
      <option value="E" selected="selected">Ativo</option>    
      <option value="D">Inativo</option> 
</select> 

Beachten Sie den Unterschied auf dem generierten Javascript für beide Elemente. Dies verursacht nur ein Problem in WebSphere 9, es funktioniert gut auf GlassFish und WildFly. Weiß jemand, was das Problem verursachen könnte?

Antwort

0

Ich entschuldige mich für die Beantwortung meiner eigenen Frage, aber ich habe endlich herausgefunden, was das Problem war. Das Element <h:form> befand sich innerhalb eines Elements <tbody> und WebSphere verlegte das generierte Element falsch, sodass alle Eingaben außerhalb des Formulars vorgenommen wurden. Das Verschieben des <h:form> nach außerhalb der <table> löste das Problem.

+0

Die automatische Beantwortung ist bei Stack Overflow akzeptabel, daher ist keine Entschuldigung erforderlich. ;) – Haxiel