我正在尝试处理@ManagedProperty但没有成功!
我一直在关注这个指南,看起来并不难.但我的代码根本行不通!
这是一个小片段
@ManagedBean
@SessionScoped
public class LoginBean {
@EJB
private LoginUserLocal loginUser;
private boolean loggedIn = false;
private User user;
private StreamedContent image;
.
.
.
//--
@Named(value = "messagesBean")
@RequestScoped
public class MessagesBean {
@ManagedProperty(value = "#{loginBean}")
private LoginBean loginBean;
public LoginBean getLoginBean() {
return loginBean;
}
public void setLoginBean(LoginBean loginBean) {
this.loginBean = loginBean;
}
public String getUser() {
System.err.println(loginBean == null);
return loginBean.getUser().getUsername();
}
Run Code Online (Sandbox Code Playgroud)
这段代码给了我一个NullPointerException,说loginBean为null!
有什么建议吗?
这些天我曾经和JSF一起工作,但是有一个"惯例",如果我应该使用的话,我有疑问.在使用托管bean时,人们习惯将其命名为XxxxxManagedBean前缀可以是与您的业务相关的任何名称.
你有这样的工作吗?特别是,尽管让搜索变得容易,但我并不喜欢那么多.你在使用其他约定吗?
谢谢你回答这个简单的疑问.
据我所知,对于使用@Annotations(或C#中的[Attributes]),您必须引用类元数据,以便您可以询问该类是否已注释(属性).
我的问题是JSF实现如何查找所有使用@ManagedBean注释的类?它是否扫描类路径中的所有类?或者有没有办法实际"查询"JVM的注释类?
我问这个是因为当我直接在我的web项目中添加带注释的支持bean时,没有问题.但我在JAR文件中定义的bean(可跨项目重用)未注册.有什么东西我必须告诉MyFaces指导它看哪个JAR文件?
此外,使用注释引入了许多不错的编程模式.我想知道我是否能以某种方式找到所有带注释的类......
我在企业应用程序模块中有一个EJB(PersonManager),它注入另一个EJB(Person):
@Stateful
public class PersonManager implements PersonManagerLocal {
@EJB
private PersonLocal person;
@Override
public void setPersonName(String name) {
person.setName(name);
}
@Override
public String getPersonName() {
return person.getName();
}
}
Run Code Online (Sandbox Code Playgroud)
我想在JSF Web应用程序中使用PersonManager EJB.我在faces-config.xml中定义它:
<managed-bean>
<managed-bean-name>personManager</managed-bean-name>
<managed-bean-class>ejb.PersonManager</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
Run Code Online (Sandbox Code Playgroud)
问题是,不会发生PersonLocal EJB的注入.person属性始终为NULL.我错了什么?
但是如果我在这样的JSF托管bean中注入PersonManager:
@ManagedBean
@RequestScoped
public class Index {
@EJB
private PersonManagerLocal personManager;
....
Run Code Online (Sandbox Code Playgroud)
有用.我需要第一个场景,请帮助我:-D
我搜索了类似的问题,但我有点困惑.我有一个登录页面,所以LoginBean也是;
@ManagedBean(name = "loginBean")
@SessionScoped
public class LoginBean implements Serializable {
private String password="";
private String image="";
@ManagedProperty(value = "#{loginBeanIdentityNr}")
private String identityNr="";
...
Run Code Online (Sandbox Code Playgroud)
成功后,导航到订单列表页面,所以我也有OrderBean.
@ManagedBean(name = "OrderBean")
@SessionScoped
public class OrderBean {
List<Ordery> sdList;
public List<Order> getSdList() {
try {
String identityNr ="";
ELContext elContext = FacesContext.getCurrentInstance().getELContext();
LoginBean lBean = (LoginBean) FacesContext.getCurrentInstance().getApplication().getELResolver().getValue(elContext, null, "loginBean");
identityNr =lBean.getIdentityNr();
sdList = DatabaseUtil.getOrderByIdentityNr(identityNr);
...
}
Run Code Online (Sandbox Code Playgroud)
我不需要整个LoginBean,只需要ManagedProperty"loginBeanIdentityNr".但是下面这段代码不起作用(当然);
identityNr = (String) FacesContext.getCurrentInstance()
.getApplication().getELResolver()
.getValue(elContext, null, "loginBeanIdentityNr");
Run Code Online (Sandbox Code Playgroud)
这次它给我返回null.我想如果我需要整个bean属性,我可以注入这些bean,对吗?那么,你对这种方法有什么建议吗?可以<f:attribute>用吗?
我想尝试一个简单的JSF 2教程示例.
我在Eclipse中使用动态Web项目并发布到Glassfish 3服务器(运行 - >在服务器上运行).第一个index.xhtml页面正确加载,但是当我必须访问托管bean时,会显示以下错误:
/index.xhtml @14,48 value="#{helloBean.name}": Target Unreachable, identifier 'helloBean' resolved to null
Run Code Online (Sandbox Code Playgroud)
我已经看过关于这个主题的各种其他讨论,但是这些解决方案对我来说似乎永远不会起作用(例如,添加beans.xml,根据命名约定给托管bean命名等).
任何帮助,将不胜感激.
这是我目前正在使用的代码:
的index.xhtml
<?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:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html">
<h:head>
<title>JSF 2.0 Hello World</title>
</h:head>
<h:body>
<h3>JSF 2.0 Hello World Example - hello.xhtml</h3>
<h:form>
<h:inputText value="#{helloBean.name}"></h:inputText>
<h:commandButton value="Welcome Me" action="response"></h:commandButton>
</h:form>
</h:body>
</html>
Run Code Online (Sandbox Code Playgroud)
response.xhtml:
<?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>JSF 2.0 Hello World</title>
</h:head> …Run Code Online (Sandbox Code Playgroud) 我有JSF 2.2和CDI的问题,我的managerbean没有解决,出现此错误
"value ="#{userBean.user.name}":目标无法访问,标识符'userBean'已解析为null"
这是我的经理bean.
@ManagedBean
@RequestScoped
public class UserBean implements Serializable {
private User user;
public void setUser(user) {
this.user = user;
}
...
}
Run Code Online (Sandbox Code Playgroud)
我的观点是:
<h:form id="login-form">
<h:outputText value="User"/>
<h:inputText value="#{userBean.user.name}" id="username"/>
<h:outputText value="Senha"/>
<h:inputSecret value="#{userBean.user.password}" id="pasword"/>
<h:commandButton id="button" value="Login" action="#{userBean.login}"/>
<h:messages />
</h:form>
Run Code Online (Sandbox Code Playgroud) 我正在使用JSF 2.0.我有一个托管bean,我可以通过我的xhtml页面访问.在bean内部,我声明了一个内部类.我可以访问ArrayList<String>托管bean但不能访问,ArrayList<InnerClass>我得到的错误是InnerClass没有可读属性.谁知道什么是错的?
我有一个名为userSession的SessionScoped bean来跟踪用户(用户名,ifLogged等).我想过滤一些页面,因此我需要从我创建的webFilter访问bean.我怎么做?我看起来甚至不可能将豆子导入到潜在的可见区域.
我正在准备JavaScript中的一些变量(在我的具体情况下,我想获得GPS位置):
function getVars() {
// ...
var x = locationInfo.lng;
var y = locationInfo.lat;
}
Run Code Online (Sandbox Code Playgroud)
我想通过以下命令按钮将它们发送到我的托管bean:
<h:commandButton value="submit" onclick="getVars()" action="#{bean.submit(x,y)}" />
Run Code Online (Sandbox Code Playgroud)
public void submit(int x, int y) {
// ...
}
Run Code Online (Sandbox Code Playgroud)
如何将JavaScript x和y变量从JavaScript 发送到JSF托管bean操作方法?
managed-bean ×10
jsf ×7
jsf-2 ×3
ejb ×2
java ×2
annotations ×1
cdi ×1
el ×1
java-ee ×1
java-ee-6 ×1
javascript ×1
jboss-weld ×1
jsf-2.2 ×1