0

我在下面有一堂課;seam @Out註釋是否有效?

package org.domain.emlakprojesi.session; 

import java.util.List; 
import javax.persistence.EntityManager; 
import org.domain.emlakprojesi.entity.ziyaretci; 
import org.jboss.seam.ScopeType; 
import org.jboss.seam.annotations.In; 
import org.jboss.seam.annotations.Logger; 
import org.jboss.seam.annotations.Name; 
import org.jboss.seam.annotations.Out; 
import org.jboss.seam.log.Log; 
import org.jboss.seam.security.Credentials; 
import org.jboss.seam.security.Identity; 

@Name("authenticator") 
public class Authenticator 
{ 
    @Logger private Log log; 

    @In Identity identity; 
    @In Credentials credentials; 
    @In EntityManager entityManager; 
    @Out(scope =ScopeType.SESSION,required=false) ziyaretci girisYapanZiyaretci; 


    public boolean authenticate() 
    { 
     log.info("authenticating {0}", credentials.getUsername()); 

     List<ziyaretci> ziyaretciler =entityManager.createQuery("from Ziyaretci where email = #{credentials.username} and sifre = #{credentials.password}").getResultList(); 

     if(ziyaretciler.size() == 1){ 
      this.setGirisyapanziyaretci(ziyaretciler.get(0)); 
      return true; 
     }else 
      return false; 
    } 

    public void setGirisyapanziyaretci(ziyaretci girisyapanziyaretci) { 
     this.girisYapanZiyaretci= girisyapanziyaretci; 
    } 

    public ziyaretci getGirisyapanziyaretci() { 
     return girisYapanZiyaretci; 
    } 

} 

我設置girisYapanZiyaretci在身份驗證方法

當我運行該應用程序我得到空指針異常

其實我問什麼時候@In和@Out註釋工作?

回答

2

注塑與@In和所謂的注射@Out工作前後的方法調用。

全部@In屬性在調用該方法之前注入,並且所有@Out屬性在調用之後在定義的上下文中設置,除非該方法引發異常。

會話範圍比事件範圍更廣泛,所以如果會話範圍的bean被注入事件範圍的bean中,事件範圍(和事件範圍的bean)在會話範圍的bean之前被銷燬。相反,如果在會話作用域bean(或任何其他更廣泛的作用域上下文)中注入事件作用域bean,則該值將在方法調用之前注入,並在方法調用後設置爲null

關於注入和JSF階段,注入發生在更新模型值階段和調用應用階段內。儘管如此,@Filter@Converter打破了這一規則。

+0

好的非常感謝你和我有一個小問題太多:如果我注入在一個事件時,注入的場被破壞(事件或會議結束結束) – daemonThread 2012-02-08 21:49:27

+0

scobed會話bean scobe組件發生了什麼如果不綁定任何方法,並且只使用bean的值綁定,那麼@ updateModalValues之前的工作階段? – daemonThread 2012-02-08 21:57:31

+0

在回覆中增加了一些說明 – 2012-02-09 15:16:11

0

@In註解得到樹參數:value, createrequiredSeam documantation有恩的例子簡要說明。

指定通過在每個組件調用開始時評估一個 JSF EL表達式來注入組件屬性。

value - 指定上下文變量的名稱。默認爲組件屬性的 名稱。或者,指定由#{...}包圍的JSF EL 表達式。

創建 - 指定Seam應實例與 同名的上下文變量的組成部分,如果上下文變量是在所有上下文中未定義 (空)。默認爲false。

required - 指定如果上下文 變量在所有上下文中都未定義,Seam應拋出異常。

也許create參數,它創建Context Variable如果它爲空,可以幫助您解決問題。

@In(create = true) 
相關問題