Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在JSF2.0中不在ajax调用上应用值_Jsf_Jsf 2_Primefaces - Fatal编程技术网

在JSF2.0中不在ajax调用上应用值

在JSF2.0中不在ajax调用上应用值,jsf,jsf-2,primefaces,Jsf,Jsf 2,Primefaces,我有一个primefaces对话框,其中有一组单选按钮和两个文本字段。我想在单选按钮的change事件中启用/禁用这些文本字段。这是我的对话框代码 <h:panelGrid style="float:left;"> <h:selectOneRadio id="timeLimit" layout="pageDirection" value="#{bean.selectedOption}" onchange="submit(

我有一个primefaces对话框,其中有一组单选按钮和两个文本字段。我想在单选按钮的
change
事件中启用/禁用这些文本字段。
这是我的对话框代码

<h:panelGrid  style="float:left;">
                            <h:selectOneRadio id="timeLimit" layout="pageDirection" value="#{bean.selectedOption}" onchange="submit()"
                            valueChangeListener="#{bean.enableDisableDecision}">
                            <f:ajax event="change" execute="@this" render="from to"/>
                                <f:selectItem itemValue="1" itemLabel="Once Only"/>
                                <f:selectItem itemValue="2" itemLabel="From:"/>
                                <f:selectItem itemValue="3" itemLabel="Permanent"/>
                                <f:selectItem itemValue="4" itemLabel="Ignore"/>
                            </h:selectOneRadio>
                        </h:panelGrid>
                        <h:outputText id="c" value="#{renderBean.limitFields}"/>

                            <h:inputText id="from" disabled="#{renderBean.limitFields}"></h:inputText>

                            <h:outputText style="margin-left:-20px;float:left;margin-top: 20px;" value="To: "/>
                            <h:inputText id="to" style="float:left; margin-top: -20px;" disabled="#{renderBean.limitFields}"></h:inputText>
这是我调用侦听器的Bean类。

@ManagedBean
@SessionScope
class Bean{
public void durationSelected(ValueChangeEvent e){

        RenderBean rb = null;
        System.out.println("Value: "+e.getNewValue().toString());
        if(e.getNewValue().toString().equals("2")){
            rb = (RenderBean) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("renderBean");
            rb.enableLimitFields();
        }else{
             rb = (RenderBean) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("renderBean");
             rb.disableLimitFields();
        }
    }
}


现在我的代码工作得很好,调用方法时没有任何问题,但当我更改单选按钮的选择时,它不会启用/禁用文本字段。这意味着值正在更改,但JSF组件在ajax调用时不会读取这些值。现在我被困在这里。有任何系统吗?

只需删除
onchange=“submit()”
从您的单选按钮。我不是JSF专家,但我猜当您发送ajax请求时,只需执行

@ManagedBean
@SessionScope
class Bean{
public void durationSelected(ValueChangeEvent e){

        RenderBean rb = null;
        System.out.println("Value: "+e.getNewValue().toString());
        if(e.getNewValue().toString().equals("2")){
            rb = (RenderBean) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("renderBean");
            rb.enableLimitFields();
        }else{
             rb = (RenderBean) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("renderBean");
             rb.disableLimitFields();
        }
    }
}