在jsf中使用ajax将文本框的值复制到另一个文本框
我对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
<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>