我在设置默认值时遇到问题<p:selectOneRadio>
。我已经阅读了一些相关主题,但我无法找到我的问题的答案。这就是它现在的工作方式:
<p:commandButton>
单击后,我使用 showLogEntryClassificationDlg()在我的支持 bean(具有会话范围)中设置了值。<p:commandButton value="#{text['button.add']}" id="treeAdd" styleClass="btn btn-primary" icon="fa fa-plus" actionListener="#{eventLogDetails.showLogEntryClassificationDlg()}" update=":logEntryClassificationDialogForm" oncomplete="PF('dlgLogEntryClassification').show(); return false;" />
爪哇
public void showLogEntryClassificationDlg(){ mode = MODE.ADD; logEntryClassification = new LogEntryClassification(); logEntryClassification.setLogEntryType(LogEntryType.LOG_ENTRY_CATEGORY); //some other code }
显示对话框,但未选择单选按钮中的值。我已经检查了支持 bean 中的 getter,它返回了正确的值(但它被调用了几次)。当我在对话框上的任何地方(!) cilck 时,单选按钮被选中(虽然没有调用 getter)。
(几乎)完整的 xhtml 文件:
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:c="http://java.sun.com/jsp/jstl/core" xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html" xmlns:p="http://primefaces.org/ui" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:o="http://omnifaces.org/ui"> <ui:composition template="/layouts/default.xhtml"> <ui:define name="title">#{text['eventLogDetail.title']}</ui:define> <ui:param name="menu" value="EventLogMenu" /> <ui:define name="body"> <h:outputScript name="jsf.js" library="javax.faces" target="head" /> <h:form id="eventLogDetailsForm"> //some code <div class="row"> <div class="col-md-12"> <div class="portlet"> <h4 class="portlet-title"> <u><i class="fa fa-sitemap"> </i> #{text['eventLogDetail.heading.classification']}</u> </h4> <div class="portlet-body"> <div class="row dt-rt"> <div class="col-sm-12"> <p:panel id="treeButtonPanel" styleClass="no-style-panel"> <div class="btn-group"> <p:commandButton value="#{text['button.add']}" id="treeAdd" styleClass="btn btn-primary" icon="fa fa-plus" actionListener="#{eventLogDetails.showLogEntryClassificationDlg}" update=":logEntryClassificationDialogForm, :logEntryClassificationDialogForm:logEntryTypeRadioPanel" oncomplete="PF('dlgLogEntryClassification').show(); return false;" /> //other commandButtons </div> </p:panel> </div> </div> </div> </div> </div> </div> </h:form> <!-- dialogs --> <p:dialog header="#{text['logEntry.logEntryClassification.add.title']}" widgetVar="dlgLogEntryClassification" appendTo="@(body)" modal="true" dynamic="true" height="300" resizable="false" styleClass="custom-popup-xs" id="logEntryClassificationDialog"> <h:form id="logEntryClassificationDialogForm"> <o:resourceInclude path="/common/messages.jsp" /> <div class="row"> <div class="col-sm-12 form-group"> <p:panel id="logEntryTypeRadioPanel" styleClass="no-style-panel"> <p:selectOneRadio id="logEntryTypeRadio" value="#{eventLogDetails.logEntryClassification.logEntryType}" converter="LogEntryTypeConverter"> <f:selectItem itemLabel="Kategoria zdarzeń" itemValue="LOG_ENTRY_CATEGORY" /> <f:selectItem itemLabel="Rodzaj zdarzenia" itemValue="LOG_ENTRY_TYPE" /> </p:selectOneRadio> </p:panel> </div> </div> //some code </h:form> </p:dialog> </ui:define> </ui:composition> </html>
我已经放入<p:selectOneRadio>
并<p:panel>
尝试更新:logEntryClassificationDialogForm:logEntryTypeRadioPanel
,但结果是一样的。
编辑:我已经测试了一些东西,也许这是某种 primefaces 错误:只有当我尝试设置第一个项目被选中时它才起作用。我在开头添加了一个项目后选择了该项目(如下所示)。有什么想法吗?
<f:selectItem itemLabel="Rodzaj zdarzenia" itemValue="LOG_ENTRY_TYPE" />
<f:selectItem itemLabel="Kategoria zdarzeń" itemValue="LOG_ENTRY_CATEGORY" />
<f:selectItem itemLabel="Rodzaj zdarzenia" itemValue="LOG_ENTRY_TYPE" />
它适用于<h:selectOneRadio>
,但我需要使用<f:selectOneRadio>