带有来自 SelectOneMenu 的数据的 confirmDialog

confirmDialog with data from SelectOneMenu

我想在提交之前显示用户先前选择的数据(来自p:selectOneMenu)。

我使用 "p:SelectOneMenu",当我单击提交时,我在“@Postconstruct 方法”中获得了值。

<h:form>
<h:panelGrid id="grid" columns="2">
 <p:selectOneMenu id="atmo" value="#{selectOneMenuView.ac_mo}" 
                    required="true" style="width:125px">
                    <p:ajax listener="#{selectOneMenuView.verif_acmo}"/>
        <f:selectItem itemLabel="Select One" itemValue="nothing" />
        <f:selectItem itemLabel="Yes" itemValue="Yes" />
        <f:selectItem itemLabel="No" itemValue="No" />
</p:selectOneMenu>

<p:selectOneMenu id="nb" value="#{selectOneMenuView.bless}" converter="nbConverter" 
                panelStyle="width:80%" effect="fade" required="true" 
                var="b" style="width:720px" filter="true" filterMatchMode="contains">
        <f:selectItem itemLabel="Bless ..." itemValue="#{null}" />
        <f:selectItems value="#{selectOneMenuView.blessures}" var="bless"
                                itemLabel="#{bless.code_nb} || #{bless.libelle_nb}" itemValue="#{bless}"/>
    <p:column style="width:10%">
            <h:outputText value="#{b.code_nb}" />
        </p:column>
    <p:column>
        <h:outputText value="#{b.libelle_nb}" />
    </p:column>
</p:selectOneMenu>
</h:panelGrid>

<p:commandButton value="Submit" actionListener="#{selectOneMenuView.btn}" update="grid growl"   
                    style="margin-left:25px" icon="ui-icon-check" oncomplete="PF('confirmDlg').show()">
        <p:confirm header="Confirmation" message="Are you sure ?" icon="ui-icon-alert" />
    </p:commandButton>
<p:confirmDialog global="true"  showEffect="fade" hideEffect="fade" widgetVar="confirmDlg" >
    <p:outputLabel value="value N1 : #{selectOneMenuView.ac_mo}"/>
     <p:outputLabel value="value N2 : #{selectOneMenuView.bless.libelle_nb}"/>
    <p:commandButton value="Confirm" type="button" styleClass="ui-confirmdialog-yes" icon="ui-icon-check" />
    <p:commandButton value="Cancel" type="button" styleClass="ui-confirmdialog-no" icon="ui-icon-close" />
</p:confirmDialog>
</p:panel>
</h:form>

我在我的管理 bean 中使用来自 "javax.faces.bean.RequestScoped" 的“@RequestScoped”。

注意:验证(提交)后我有正确的值。所以 setter 和 getter 工作得很好

注意事项 2:“@ViewScoped”和“@SessionScoped”存在同样的问题

这是managedbean的代码

@ManagedBean
@SessionScoped
public class SelectOneMenuView {

// ---- begin : ac mo
private String ac_mo;
// Getter and Setter of ac_mo
// ---- end : ac mo

// ----- Begin Blessure
private Nb bless;
private List<Nb> blessures;
@ManagedProperty("#{blessureBean}")
private NbBean nbbean;
// getters and setters of Blessure's elements
// ----- end Blessure

// ------ begin : postconstruct 
@PostConstruct
public void init() {
    blessures = nbbean.getBlessures();
    this.ac_mo = "nothing";
}
// ------ end of postconstruct

public void btn()
{
    // some stuff
    }
 }

这将如何与请求范围的 bean 一起工作?请更改您的 bean 以查看范围,以便在请求之间保留数据。

这样解决了:

 <p:selectOneMenu> 
  ... do something ... 
  <p:ajax event="change" update="confirmdialog" /> 
 </p:selectonemenu>