在JSF2.0中不在ajax调用上应用值
我有一个primefaces对话框,其中有一组单选按钮和两个文本字段。我想在单选按钮的在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(
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();
}
}
}