2011-03-09 6 views
1

GlassFish를 사용하여 Netbeans에서 Java EE에서 수행중인 과정에 대해 조금의 프로젝트를 수행하고 있습니다. Bean에 대한 'getter'메소드가 null 값을 반환하므로 아무 것도 데이터베이스에 제출되지 않는 문제가 있습니다. 프로젝트의 프론트 엔드는 문제의 일부가 될 수있는 JSF 페이지입니다. 내 의심은 콩, JSF 페이지 또는 내 구성 (무엇을 알 수 있습니까?) 문제입니다.Bean 'getters'가 값을 반환하지 않습니다.

저는이 주제에 대해 매우 신통적이어서 전문 용어와 naivety에 대한 제발 용서해주십시오. 주제!

코스 강사는 우리가 작성해야하는 것과 비슷한 프로젝트를 업로드하여 모두 가이드로 사용하고 있습니다. 그의 작품은 완벽하게 내 작품은 동일하지만 그렇지 않습니다.

Google 기관의 규정을 준수하기 위해 광범위한 코드를 게시 할 수는 없지만 몇 가지 발췌 문장을 게시 할 수 있습니다. 게시해야 할 특정 것이 있다면 최선을 다하겠습니다.

콩 :

@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

내 생각에 getRecipient 및 getPost 메소드가 호출되는 경우가 있지만 위의 몇 줄에 선언 된 인스턴스 화되지 않은 post/recipient 변수 만 반환합니다. 어쩌면 그것이 문제 일 수도 있지만, 왜 그런 일이 벌어지고 있는지, 나는 모른다. 누구도 궁금해하는 경우, encrypt 메소드는 getPost 메소드를 호출하여 "게시물"(JSF 형식의 텍스트 문자열)을 가져오고 반환 값 + 비밀번호 (현재 "password"값을 갖는 문자열로 하드 코딩 됨 "그런 다음 DES/MD5를 사용하여 암호화하고 바이트 [] 형식으로 암호화 된 게시물을 반환합니다. – james246

+0

JSF 전문가 BalusC의 블로그를 읽고 문제가 될 수 있다고 생각한 적이 있습니다. @SessionScoped 가져 오기 패키지는 javax.faces.bean.SessionScoped ... 이것이 올바른 것으로 생각했지만 javax.enterprise.context.SessionScoped로 변경하면 문제가 해결되었습니다! Getter는 이제 값과 "p"객체를 반환합니다. 이 나무는 우연이 아니며 의도대로 작동 할 것입니다! – james246

+0

나는 똑같은 문제에 직면하고 있습니다 - 그 BalusC 블로그 엔트리에 대한 링크를 제공해 주시겠습니까? –

답변

0

귀하의 해상도가 맞습니다. 이유 - 사용중인 bean은 JSF Managed bean이 아닌 CDI bean입니다. CDI 빈은 JSF에서 JSR 299 지원으로 지원됩니다. CDI 빈의 경우에 사용되는 범위는 javax.enterprise.context.SessionScoped이다. 그래서 당신이 한 일은 완벽합니다.

관련 문제