f:ajax不使用execute和listener属性
我有一个表单,当我单击单选按钮时,它将使用三个文本框的值对控制器进行ajax调用 下面的代码在对控制器进行ajax调用的情况下运行良好f:ajax不使用execute和listener属性,ajax,jsf,Ajax,Jsf,我有一个表单,当我单击单选按钮时,它将使用三个文本框的值对控制器进行ajax调用 下面的代码在对控制器进行ajax调用的情况下运行良好 <h:selectOneRadio id="mobilePhoneId" styleClass="addradio" value="#{Controller.accountContactPageBean.mobilePhoneSelected}" onclick="onClickPreferredPhone(this)"> <f:sel
<h:selectOneRadio id="mobilePhoneId" styleClass="addradio" value="#{Controller.accountContactPageBean.mobilePhoneSelected}" onclick="onClickPreferredPhone(this)">
<f:selectItem itemValue ="Mobile" itemLabel="Preferred" />
<f:ajax render="homePhone officePhone mobilePhone" listener="#{Controller.resetPreferredLine('Mobile')}"/>
</h:selectOneRadio>
为了在ajax调用中发送文本框中的值,我在没有调用控制器plz帮助后在其中执行
下面是execute的外观
<h:selectOneRadio id="mobilePhoneId" styleClass="addradio" value="#{Controller.accountContactPageBean.mobilePhoneSelected}" onclick="onClickPreferredPhone(this)">
<f:selectItem itemValue ="Mobile" itemLabel="Preferred" />
<f:ajax render="homePhone officePhone mobilePhone" execute="homePhone officePhone mobilePhone" listener="#{Controller.resetPreferredLine('Mobile')}"/>
</h:selectOneRadio>
我不确定您的第一个代码是否有效,当您使用listener属性时,这必须指向具有下一个约定的方法:public void MethodName(ajaxBehavityEvent事件)
但是顺便说一句,在执行中,您可能有一个无效id,您也可以通过这种方式发送表单中的所有值execute=“@form”或execute=“@all”.对于更复杂的验证,最好从控制器进行验证。如果控制器中的值匹配,则抛出如下所示
if(true){
FacesContext facesContext = FacesContext.getCurrentInstance();
String mode = facesContext.getExternalContext().getRequestParameterMap().get("accountSaveType");
FacesMessage message = new FacesMessage();
message.setSummary("You error message");
message.setDetail("You error message");
facesContext.addMessage("your component ID", message);
return path; //same page to throw the error eg. "/home/index"
}
您正在运行哪个JSF版本,在哪个浏览器中观察到了这一点?你试过其他浏览器吗?