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组件读?
是的,这是thanksssssssss – Despicable
欢迎您的问题... – Freak