2013-04-02 17 views
0

我有,我有一组单选按钮,两个文本fields.I要启用/禁用的change事件单选按钮,这些文本字段的primefaces对话框。
这里是我的对话框的代码
并不适用于Ajax调用值在JSF 2.0

<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> 


,这里是我的RenderBean

@ManagedBean 
@SessionScoped 
public class RenderBean { 
    public boolean limitFields; 

    public RenderBean() { 

     limitFields = true; 
    } 

    public boolean isLimitFields() { 
     return limitFields; 
    } 

    public void setLimitFields(boolean limitFields) { 
     this.limitFields = limitFields; 
    } 

    public void enableLimitFields() { 

     limitFields = false; 
    } 

    public void disableLimitFields() { 

     limitFields = true; 
    } 
} 

,这里是我的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(); 
     } 
    } 
} 


现在我的代码工作完美的,它被调用的方法没有任何问题,但它不启用/禁用文本字段当我改变无线电button.It的选择装置观念正在转变,但他们call.Now我坚持here.Any syggestions不受Ajax的JSF组件读?

回答

1

只需从您的单选按钮中删除onchange="submit()"即可。我不是JSF专家,但我想当您发送ajax请求时,只需执行<f:ajax ..中的数据,然后无需提交即可。因此,当我复制粘贴示例时,这是行不通的,然后我通过删除onchange="submit"试了一下,它工作得很好:)

+0

是的,这是thanksssssssss – Despicable

+0

欢迎您的问题... – Freak

相关问题