我有一个很复杂的形式,在大多数领域都有验证。在某个地方我有<h:selectOneMenu>
,如果我选择某个值,我希望在其下方显示另一个<h:selectOneMenu>
。第二个列表最初是不可见的(我将rerender
属性设置为false
,并使用clickListener()
函数将其设为true并将其渲染为ajax调用。)
<o:form>
<h:panelGroup id="group" >
<label>Status</label>
<h:selectOneMenu id="status" immediate="true" label="Status" value="#{candidateBean.statusVO}" converter="omnifaces.SelectItemsConverter" required="true" requiredMessage="The field is empty">
<f:selectItem itemValue="#{null}" itemLabel="-- select one --" />
<f:selectItems value="#{settingsBean.settings.statusListVO.statusVO}" var="status" itemValue="#{status}" itemLabel="#{status.name}"/>
<f:ajax event="valueChange" listener="#{candidateBean.clickListener}" execute="form" render="group" />
</h:selectOneMenu>
<h:messages for="status" style="color:red" />
<label>Invalidation Reason</label>
<h:selectOneMenu id="invalidationReason" rendered="#{candidateBean.falseTest}" label="Invalidation Reason" value="#{candidateBean.invalidationReasonVO}" converter="omnifaces.SelectItemsConverter" requiredMessage="The field is empty">
<f:selectItem itemValue="#{null}" itemLabel="-- select one --" />
<f:selectItems value="#{settingsBean.settings.invalidationReasonListVO.invalidationReasonVO}" var="invalidation" itemValue="#{invalidation}" itemLabel="#{invalidation.name}"/>
</h:selectOneMenu>
</h:panelGroup>
</o:form>
我使用<o:form>
代替<h:form>
,因为我使用<o:ignoreValidationFailed>
形式的某个地方,因为我需要使用<h:selectOneMenu>
的值更新dataTable并强制更新我的@SessionScoped
模型。
一切正常,除非我从列表中选择一个值,panelGroup中的元素将呈现完全没有任何样式,我无法弄清楚原因。如果我刷新页面,CSS将加载到元素上,但这不是一个选项。
我的bean是mmap
。