Jsf 如何在托管bean上获取变量?
我正在尝试制作一个登录屏幕,所以我从用户那里获得了ıbanNumber并通过了,然后在数据库中检查它。这是可行的,但当我尝试在另一个页面上使用`doldur(),获取数据库中具有相同的ıbanNumber的一些信息时,它返回null 我如何解决这个问题?为什么ibanNumber返回null 不:在“Kullaniciİslem Menusu.xhtml”页面上单击“hesap işlemleri”按钮时添加jsf页面,然后打开“hesap işlemleri.xhtml”并填充数据表Jsf 如何在托管bean上获取变量?,jsf,managed-bean,Jsf,Managed Bean,我正在尝试制作一个登录屏幕,所以我从用户那里获得了ıbanNumber并通过了,然后在数据库中检查它。这是可行的,但当我尝试在另一个页面上使用`doldur(),获取数据库中具有相同的ıbanNumber的一些信息时,它返回null 我如何解决这个问题?为什么ibanNumber返回null 不:在“Kullaniciİslem Menusu.xhtml”页面上单击“hesap işlemleri”按钮时添加jsf页面,然后打开“hesap işlemleri.xhtml”并填充数据表 @Man
@ManagedBean(name = "login")
public class LoginBean {
public LoginBean() {
}
private String ıban_number;
private String sifre;
private String paraCek;
private String paraYatir;
public String getParaCek() {
return paraCek;
}
public void setParaCek(String paraCek) {
this.paraCek = paraCek;
}
public String getParaYatir() {
return paraYatir;
}
public void setParaYatir(String paraYatir) {
this.paraYatir = paraYatir;
}
public String getIban_number() {
return ıban_number;
}
public void setIban_number(String ıban_number) {
this.ıban_number = ıban_number;
}
public String getSifre() {
return sifre;
}
public void setSifre(String sifre) {
this.sifre = sifre;
}
db_connection dbLogin = new db_connection();
private PreparedStatement psLogin;
private ResultSet rsLogin;
public String getLogin() {
try {
System.out.println(getIban_number() + " " + getSifre());
psLogin = dbLogin.getCon().prepareStatement("select * from kullanici_giris where ibanNumber=? and sifre=?");
psLogin.setString(1, getIban_number());
psLogin.setString(2, getSifre());
System.out.println("Veri tabanına ulaşıldı");
rsLogin = psLogin.executeQuery();
while (rsLogin.next()) {
return "true";
}
} catch (SQLException ex) {
Logger.getLogger(LoginBean.class.getName()).log(Level.SEVERE, null, ex);
}
return "false";
}
public List<getAccountInfo> doldur() {
System.out.println(getIban_number());
List<getAccountInfo> liste = new ArrayList<getAccountInfo>();
try {
psLogin = dbLogin.getCon().prepareStatement("SELECT * FROM hesap_bilgi where ibanNumber = ? ");
psLogin.setString(1, getIban_number());
rsLogin = psLogin.executeQuery();
while (rsLogin.next()) {
getAccountInfo obj = new getAccountInfo();
obj.setIbanNumber(rsLogin.getString(1));
obj.setToplamButce(rsLogin.getString(2));
obj.setHarcananButce(rsLogin.getString(3));
obj.setKalanButce(rsLogin.getString(4));
liste.add(obj);
}
} catch (SQLException ex) {
}
return liste;
}
}
<?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">
<h:head>
<title>Kullanici İslem Menusu</title>
</h:head>
<h:body>
<h:form>
<h:panelGrid columns="1">
<h:commandButton value="Hesap İşlemleri" action="hesap_islemleri"/>
<h:commandButton value="Kişisel İşlemleri" action="kisisel_islemler"/>
<h:commandButton value="Şubelerimiz" action="subelerimiz"/>
</h:panelGrid>
</h:form>
</h:body>
</html>
<?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:dataTable value="#{login.doldur()}" var="c">
<h:column>
<f:facet name="header">
<h:outputLabel value="ıbanNumber"/>
</f:facet>
<h:outputLabel value="#{c.ibanNumber}"/>
</h:column>
<h:column>
<f:facet name="header">
<h:outputLabel value="ToplamButce"/>
</f:facet>
<h:outputLabel value="#{c.toplamButce}"/>
</h:column>
<h:column>
<f:facet name="header">
<h:outputLabel value="HarcananButce"/>
</f:facet>
<h:outputLabel value="#{c.harcananButce}"/>
</h:column>
<h:column>
<f:facet name="header">
<h:outputLabel value="KalanButce"/>
</f:facet>
<h:outputLabel value="#{c.kalanButce}"/>
</h:column>
</h:dataTable>
</h:form>
</h:body>
</html>
@ManagedBean(name=“login”)
公共类登录{
公共登录页(){
}
私有字符串ıban_编号;
私有字符串筛选;
私人弦乐长椅;
私有字符串paraYatir;
公共字符串getParaCek(){
回座;
}
公共空侧窗(字符串侧窗){
this.paraCek=paraCek;
}
公共字符串getParaYatir(){
回归帕拉雅蒂尔;
}
public void setParaYatir(字符串paraYatir){
this.paraYatir=paraYatir;
}
公共字符串getIban_number(){
返回ıban_编号;
}
公共无效setIban_编号(字符串ıban_编号){
这个。ıban_数=ıban_数;
}
公共字符串getSifre(){
返筛;
}
公共无效集合sifre(字符串sifre){
this.sifre=sifre;
}
db_connection dbLogin=新的db_connection();
私人编制报表psLogin;
私有结果集rsLogin;
公共字符串getLogin(){
试一试{
System.out.println(getIban_number()+“”+getSifre());
psLogin=dbLogin.getCon();
setString(1,getIban_number());
setString(2,getSifre());
System.out.println(“Veri tabanına ulaşldı”);
rsLogin=psLogin.executeQuery();
while(rsLogin.next()){
返回“真”;
}
}catch(SQLException-ex){
Logger.getLogger(LoginBean.class.getName()).log(Level.SEVERE,null,ex);
}
返回“false”;
}
公共列表doldur(){
System.out.println(getIban_number());
List liste=new ArrayList();
试一试{
psLogin=dbLogin.getCon();
setString(1,getIban_number());
rsLogin=psLogin.executeQuery();
while(rsLogin.next()){
getAccountInfo obj=新建getAccountInfo();
obj.setIbanNumber(rsLogin.getString(1));
obj.setToplamButce(rsLogin.getString(2));
obj.setHarcananButce(rsLogin.getString(3));
obj.setKalanButce(rsLogin.getString(4));
添加列表(obj);
}
}catch(SQLException-ex){
}
返回列表;
}
}
库拉尼西斯勒姆·梅努苏
Facelet标题
您的iBanNumber从用户处传递,并存储在运行第一个页面时初始化的bean实例中。当您从另一个页面调用它时,将为托管bean创建一个新实例。也许这就是为什么第一次在bean中设置的值在第二次不再可用的原因。尝试将托管bean的范围更改为SessionScoped。这样,bean中的值在整个会话期间都会保留。您可以阅读更多关于JSF会话的信息。获取属性的方式很奇怪
例如,如果您有一个托管bean(name=“mBean”)和一个属性“String property”;您有getter和setter“getProperty”和“setProperty”,好吗
因此,当您从xhtml页面通过Expression语言调用它时,您将使用,例如:
<h:outputText value="#{mBean.property}" />
所以,
1-当您使用doldur()时,它真的在数据表中工作吗?您不需要类似属性“Collection doldur”及其getter和setter“getDoldur”和“setDoldur”这样的东西吗 2-相同的思维方式;你不需要声明“StringıbanNumber”,然后你有getter和setter“getIbanNumber”和“setIbanNumber”,然后
<h:outputLabel value="#{c.ibanNumber}"/>
?
先检查一下这些东西
System.out.println(getIban_number())代码>这是否打印出预期值?请在失败的页面中显示JSF代码;但是System.out.println(getIban_number()+“”+getSifre());这张照片是你所期望的。你的托管Bean的范围是什么?谢谢你的帮助。我添加了@SessionScoped并实现了序列化,这是我的工作。