gpt4 book ai didi

java - 如何将变量的值从jsf的bean页面(即bean.java)移动到另一个java类?

转载 作者:太空宇宙 更新时间:2023-11-04 08:29:47 25 4
gpt4 key购买 nike

如何将变量的值从 jsf 的 bean 页面(即 bean.java)移动到另一个 java 类?当我尝试这样做时,分配给第二个 java 类中的变量的值为 NULL。,

我使用了 primefaces UI 框架(类似于 jsf)并将每个字段值分配给一个 bean 类。分配给 bean 类中每个变量的值都是正确的。但是当我尝试将这些值移动到另一个 .java 文件时。变量的作用域消失,值为 NULL。查看我的编码..

LOGIN.XHTML

<!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:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.prime.com.tr/ui">


<h:head></h:head>
<h:body>

<p:panel header="Login" style="">
<h:form>

<h:panelGrid columns="2" cellpadding="2">
<h:outputText value="Username"></h:outputText>
<p:inputText id="userName" value="#{loginBean.userName}"></p:inputText>
<h:outputText value="Password"></h:outputText>
<p:password id="password" value="#{loginBean.password}"></p:password>
<p:commandButton value="Sign in" ajax="false" actionListener="#{loginBean.forward}"></p:commandButton>



</h:panelGrid>

</h:form>

</p:panel>
</h:body>


</html>

loginBean.java

package bean;
import receive.*;
public class loginBean {
public String userName;
public String password;
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public void forward()
{
System.out.println(getUserName());
receiveclass r=new receiveclass();
r.dbc();
}
}

receiveclass.java

package receive;
import bean.loginBean;
public class receiveclass {
loginBean lb=new loginBean();

public void dbc()
{
String s= lb.getUserName();
String p=lb.getPassword();
System.out.println(s);
System.out.println(p);
//System.out.println("hi");

}

}

输出是,

如果我作为管理员,在文本字段中给出管理员

我收到的是

管理员无效的空

最佳答案

您手动创建 bean,而不是让 JSF 管理 bean。 JSF 根本不会使用手动创建的 bean。您需要让 JSF 自动创建和管理这些 bean。您可以通过将其注入(inject)为@ManagedProperty来访问其他JSF托管bean。 :

在您的特定情况下,以下内容应该有效:

@ManagedBean
@RequestScoped
public class LoginBean {

private String userName;
private String password;

@ManagedProperty
private ReceiveClass receiveClass;

public void forward() {
receiveClass.dbc(this);
}

// Add/generate getters and setters.
}

@ManagedBean
@SessionScoped
public class ReceiveClass {

public void dbc(LoginBean loginBean) {
System.out.println(loginBean.getUserName());
}

}

(请注意,我修复了代码以正确粘附 Java Naming Conventions。类名称应以大写字母开头)

另请参阅:

关于java - 如何将变量的值从jsf的bean页面(即bean.java)移动到另一个java类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7765291/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com