使用<p:ajax>和@ViewScoped </p:ajax>输入Text null指针

时间:2012-08-06 16:10:25

标签: ajax null primefaces textinput view-scope

我正面临一个问题,我无法解决:(

通过选择selectOneRadio中的项目,我想设置一个特定的变量:

<h:form id="form">
    <p:selectOneRadio id="options" value="#{rechercheBean.choose}">
        <f:selectItem itemLabel="Critere 1" itemValue="c1" />
        <f:selectItem itemLabel="Critere 2" itemValue="c2" />
        <p:ajax update="critere" />
    </p:selectOneRadio>

    <h:panelGrid columns="1" id="critere">
        <c:choose>
            <c:when test="#{monBean.choix eq 'c1'}">
                <h:outputText value="Critere 1 :" />
                <p:inputText id="cr1" value="#{rechercheBean.critere1}" />
            </c:when>
            <c:when test="#{monBean.choix eq 'c2'}">
                <h:outputText value="Critere 2 :" />
                <p:inputText id="cr2" value="#{rechercheBean.critere2}" />
            </c:when>
        </c:choose>
    </h:panelGrid>
    <h:commandButton value="Add critere" actionListener="#{rechercheBean.add}"/>
</h:form>

使用managedBean SessionScope,此代码可以工作,但使用ViewScope,它不起作用。

在ViewScope中,当我点击按钮时,特定变量为null,但如果我删除该组件,则设置特定变量!

我需要在inputext之间切换:(

我该如何解决我的问题?

很多!

1 个答案:

答案 0 :(得分:0)

替换

 <c:choose>
        <c:when test="#{monBean.choix eq 'c1'}">

<panelGroup rendered="#{monBean.choix eq 'c1'}">

(替换<c:when}

如果您使用的是Primefaces,则可以将<h:commandButton替换为<p:commandButton,或者只将f:ajax添加到当前的<h:commandButton