Ajax 事件未被调用
Ajax event not being invoked
我的应用程序中的一个页面有一个 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 上运行良好。
有谁知道可能导致此问题的原因?
很抱歉回答了我自己的问题,但我终于弄清楚了问题所在。
<h:form>
元素在 <tbody>
元素内,WebSphere 错放了生成的元素,使所有输入都在表单之外。
将 <h:form>
移动到 <table>
之外解决了问题。
我的应用程序中的一个页面有一个 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 上运行良好。 有谁知道可能导致此问题的原因?
很抱歉回答了我自己的问题,但我终于弄清楚了问题所在。
<h:form>
元素在 <tbody>
元素内,WebSphere 错放了生成的元素,使所有输入都在表单之外。
将 <h:form>
移动到 <table>
之外解决了问题。