没有调用Ajax事件

时间:2016-07-21 08:19:01

标签: ajax websphere jsf-2.2

我的应用程序中的一个页面有一个selectOneMenu组件,其中包含一个不会被触发的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上运行良好。 有谁知道可能导致这个问题的原因?

1 个答案:

答案 0 :(得分:0)

我为回答我自己的问题而道歉,但我终于弄明白了问题是什么。 <h:form>元素位于<tbody>元素内,WebSphere错放了生成的元素,使所有输入都在表单之外。 将<h:form>移到<table>之外解决了问题。