Bean'getters'没有返回值

时间:2011-03-09 17:45:52

标签: java jsf netbeans java-ee javabeans

我正在使用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小时),所以非常感谢任何帮助!

非常感谢

1 个答案:

答案 0 :(得分:0)

您的解决方案是正确的。原因 - 您使用的bean是CDI bean而不是JSF Managed bean。 JSF支持CDI bean作为JSR 299支持。在CDI bean的情况下使用的范围是javax.enterprise.context.SessionScoped。所以你所做的一切都很好。