在jsf中使用ajax将文本框的值复制到另一个文本框

在jsf中使用ajax将文本框的值复制到另一个文本框,ajax,jsf,Ajax,Jsf,我对ajax非常陌生,并尝试将一个框的值复制到另一个框。这是我的密码: <h:form> <h:inputText value="#{ajaxBean.name}"> <f:ajax render="otherbox" execute="@this" event="keyup"></f:ajax> </h:inputText> <h:inputText id

我对ajax非常陌生,并尝试将一个框的值复制到另一个框。这是我的密码:

 <h:form>
        <h:inputText value="#{ajaxBean.name}">
            <f:ajax render="otherbox" execute="@this" event="keyup"></f:ajax>
        </h:inputText>
        <h:inputText id="otherbox" value="#{ajaxBean.name}"></h:inputText>
 </h:form>
那个代码不起作用。有人能帮我吗


谢谢

我想你把JSF和CDI搞混了@Dependent表示bean位于Dependent伪作用域(这是CDIBeans的默认作用域),因此每次发出请求时,bean都将被重新关联,bean不能保持任何状态。寻找对作用域的解释,特别是依赖作用域的用途

因此,首先您必须使用一些不同的作用域,@RequestScoped应该足以完成您的任务。由于我在这里看不到CDI的任何用途,请使用@ManagedBean而不是@Named,因此bean的默认作用域将是请求作用域

试试这个:

@ManagedBean
public class AjaxBean {
    ...
}

你的问题不是关于Ajax或JSF的。这是一个JavaScript问题

您可以使用JavaScript访问和修改项目


函数copyField()
{   
document.getElementById(“field2”).value=document.getElementById(“field1”).value;
}
和您的页面:

<h:form id="myform" prependId="false">
        <h:inputText id="field1" value="#{myBean.name}" onkeyup="copyField();" />
        <h:inputText id="field2" value="#{myBean.name}"></h:inputText>
 </h:form>

注意prependId=“false”以避免混淆ID

另请参见:


试试这个:@rags它说没有“更新”属性,没有使用执行,并且将@all for render放在那里,仍然不起作用?@Al-Mothafar谢谢,但不起作用。请检查@user1983983答案。他告诉你问题出在哪里。或者,如果要使用
CDI
,请使用另一个作用域,例如
javax.faces.view.ViewScoped
中的
@ViewScoped
。无论选择什么范围,请确保不要选择
javax.faces.bean
包中的范围
<script>
function copyField()
{   
    document.getElementById("field2").value = document.getElementById("field1").value;  
}
</script>
<h:form id="myform" prependId="false">
        <h:inputText id="field1" value="#{myBean.name}" onkeyup="copyField();" />
        <h:inputText id="field2" value="#{myBean.name}"></h:inputText>
 </h:form>