我正在使用Glassfish在Netbeans做一个小项目,用于我在Java EE上所做的课程。我有一个问题,我的Bean的'getter'方法返回一个空值,因此没有任何东西被提交到数据库。项目的前端是一个JSF页面,可能是问题的一部分。我怀疑它是bean,JSF页面或我的配置(什么?我不知道!)这就是问题
我对这个话题很新,所以请原谅我在这个问题上缺乏行话和天真!
我们的课程讲师上传了一个类似于我们需要创建的项目,因此我们都将其作为指南。他的作品完美而我的作品对我来说是完全相同的,但却没有。
我不能发布任何广泛的代码,以符合我们机构的规定,但我可以发布几个片段。如果有特定的东西需要张贴,我会尽我所能。
Bean:
@Named(value="secure")
@SessionScoped
public class Post implements Serializable {
private String post;
private String recipient;
@EJB private PostLocal posts; //local interface
public Post() {
}
public String getRecipient() {
return recipient;
}
public void setRecipient(String recipient) {
this.recipient= recipient;
}
public List<Post> getPosts() {
return posts.getAllPosts();
}
public String getPost() {
return post;
}
public void setPost(String post) {
this.post = post;
}
public String submit() {
Post p = new Post();
byte[] encryptedMsg = p.encrypt(getPost(), "password"); //the post is encrypted, that's why it's stored as a byte array. getMessage returns null..
p.setRecipient(getRecipient()); //getRecipient returns null
p.setMessage(encryptedMsg);
posts.add(s);
return "index";
}
JSF页面:
<?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>Project</title>
</h:head>
<h:body>
<h:form>
<table>
<tr>
<td>
Recipient:
</td>
<td>
<h:inputText value="#{secure.recipient}"/>
</td>
</tr>
<tr>
<td>
Enter a message to post here:
</td>
<td>
<h:inputText value="#{secure.post}"></h:inputText>
</td>
</tr>
<tr>
<td> <h:commandButton action="#{secure.submit}" value="Submit" /> </td>
</tr>
</table>
<h:dataTable value="#{secure.posts}" var="thePosts">
<h:column>
<f:facet name="header">Name</f:facet>
#{thePosts.recipient}
</h:column>
<h:column>
<f:facet name="header">Comment</f:facet>
#{thePosts.post}
</h:column>
</h:dataTable>
</h:form>
</h:body>
如有任何问题,请务必询问!我完全坚持这个(并且过去24小时),所以非常感谢任何帮助!
非常感谢
答案 0 :(得分:0)
您的解决方案是正确的。原因 - 您使用的bean是CDI bean而不是JSF Managed bean。 JSF支持CDI bean作为JSR 299支持。在CDI bean的情况下使用的范围是javax.enterprise.context.SessionScoped。所以你所做的一切都很好。