我有一个表单,当我单击单选按钮时,它将使用三个文本框的值对控制器进行ajax调用。
以下代码适用于对控制器进行ajax调用的情况。
<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帮助之后执行该操作。
这是执行时的样子。
<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>
答案 0 :(得分:2)
对于复杂的验证,最好从控制器验证它。如果值在控制器中匹配,则如下所示。
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"
}
答案 1 :(得分:0)
我不确定你的第一个代码是否有效,当你使用listener属性时,它必须指向一个带有下一个合同的方法:public void MethodName(AjaxBehaviourEvent event)
但是顺便说一句,也许在执行中你有一个无效的id你也可以通过这种方式发送表单中的所有值:execute =“@ form”或execute =“@ all”。