我是jsf的新手。我在使用ajax和viewscope bean时遇到了麻烦。
这是我的代码:
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core">
<h:head>
<title>Facelet Title</title>
</h:head>
<h:body>
<h:form>
<h:inputText id ="text" value="#{bean2.str1}" />
<h:inputText id ="text2" value="#{bean2.str1}" />
<h:commandButton value="Test">
<f:ajax execute="text" render="text2"/>
</h:commandButton>
<h:commandButton value="Home" action="home"/>
</h:form>
</h:body>
</html>
package com.hem.beans;
import java.io.Serializable;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
@ManagedBean
@ViewScoped
public class Bean2 implements Serializable {
public String str1;
public String getStr1()
{
return str1;
}
public void setStr1(String str)
{
str1 = str;
}
}
页面显示2个输入框和命令按钮“Test”。 当我在第一个输入框中输入值并单击测试时,没有任何反应(也没有错误)。
但是当我把豆子作为Sessionscoped时它工作得很好。
请指导我。
答案 0 :(得分:2)
它应该可以与@ViewScoped
一起使用。但是,您可以通过execute
更改@form
属性值的值,以便提交所有表单:
<h:form>
<h:inputText id ="text" value="#{bean2.str1}" /><br />
<h:outputText id ="text2" value="#{bean2.str1}" /><br />
<h:commandButton value="Test">
<f:ajax execute="@form" render="text2"/>
</h:commandButton>
<h:commandButton value="Home" action="home"/>
</h:form>
此外,您最好将结果显示在<h:outputText />
代码组件中,而不是另一个<h:inputText />
。