2016-07-21 55 views
0

來自我的應用程序的頁面之一有一個selectOneMenu組件,其中有一個Ajax事件不會被觸發。我有類似的頁面,有類似的組件,可以按預期工作。 一個例子的作品:未調用Ajax事件

<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> 

生成以下元素:

<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> 

不工作的組成部分:

<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> 

生成以下元素:

<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> 

注意兩個元素上生成的JavaScript的區別。 這隻會導致WebSphere 9出現問題,它在GlassFish和WildFly上運行良好。 有沒有人知道可能會導致這個問題?

回答

0

我很抱歉回答我自己的問題,但我終於明白了問題所在。 <h:form>元素位於<tbody>元素中,WebSphere錯誤地放置了生成的元素,使所有輸入都在表單之外。 將<h:form>移至<table>之外即可解決問題。

+0

堆棧溢出可接受自答,所以不需要道歉。 ;) – Haxiel