我的应用程序中的一个页面有一个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上运行良好。 有谁知道可能导致这个问题的原因?
答案 0 :(得分:0)
我为回答我自己的问题而道歉,但我终于弄明白了问题是什么。
<h:form>
元素位于<tbody>
元素内,WebSphere错放了生成的元素,使所有输入都在表单之外。
将<h:form>
移到<table>
之外解决了问题。