2014-03-19 98 views
0

現在我用的是f:viewParam標籤請求參數注入到我的bean的一個領域由Spring管理豆進樣JSF請求參數在使用註釋

<f:viewParam name="id" value="#{surveyController.id}" /> 

但我寧願喜歡使用註解這個。我瞭解@Value註釋,我想我可以做這樣的事情

@Component 
@Scope("view") 
public class SurveyControlador { 
    @Value("#{new Long.parseLong('${param.id}')}") 
    private Long id; 

    .... 
} 

但是,這只是普通的難看。

有沒有更好的方法,我不需要明確地轉換值,甚至可能省略「參數」?我甚至願意安裝第三方庫

回答

1

我用omnifaces' @Param成功,就像這樣:

@Named @ViewScoped 
public class SurveyController { 
    @Inject @Param(name = "id") 
    private ParamValue<Long> idParam; 

    public void doStuff() { 
     if (idParam.getValue().equals(1)) { 
      throw new IllegalAccessException("you don't dare"); 
     } 
    } 
} 

臨:您還可以訪問原始提交的值和omnifaces可選地應用驗證/轉換(檢查文檔)。

Con:包裝你的真實參數。如果你想保留導航參數,你仍然需要指定<f:viewParam>(你不需要將它綁定到支持bean,tho)。

請注意,這利用了CDI,這可能會或可能不適合您的工作方式。

+0

是的,我知道Omnifaces的@Param註釋,但我必須使用Spring來爲每個用戶的依賴注入要求:(謝謝反正,馬比 – zootropo

+0

然後,太糟糕了,永遠不要做太多的Spring,所以我必須離開它給別人提供更好的解決方案。 – mabi