f:ajax不使用execute和listener属性

时间:2013-12-16 13:12:29

标签: ajax jsf

我有一个表单,当我单击单选按钮时,它将使用三个文本框的值对控制器进行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>

2 个答案:

答案 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”。