Бин 'getters' не возвращает значение - PullRequest
1 голос
/ 09 марта 2011

Я делаю небольшой проект в Netbeans, используя Glassfish для курса, который я делаю на Java EE. У меня проблема с тем, что мои методы 'getter' для Бина возвращают нулевое значение, и поэтому в базу данных ничего не передается. Интерфейсом проекта является страница JSF, которая может быть частью проблемы. Мое подозрение, что это проблема - боб, страница JSF или моя конфигурация (чего? Я не знаю!) - это проблема

Я очень новичок в этой теме, поэтому, пожалуйста, прости мне отсутствие жаргона и наивности по этому вопросу!

Наш преподаватель курса загрузил проект, который похож на то, что нам нужно создать, поэтому мы все используем его в качестве руководства. Его работы прекрасно, тогда как мои, которые для меня идентичны, нет.

Я не могу опубликовать какой-либо обширный код, чтобы соответствовать правилам нашего учреждения, но я могу опубликовать несколько фрагментов. Если есть что-то конкретное, что нужно опубликовать, я сделаю все возможное.

Боб:

@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 голосов
/ 10 марта 2011

Ваше разрешение верное. Причина - используемый вами компонент является компонентом CDI, а не управляемым компонентом JSF. Компоненты CDI поддерживаются в JSF как поддержка JSR 299 . Область действия, которую следует использовать в случае компонента CDI, - javax.enterprise.context.SessionScoped. То, что вы сделали, прекрасно.

...