2012-02-06 68 views
0

我有@ViewScoped@ManagedBean@RequestParam來初始化我的@PostConstruct方法中的某些內容。在@ViewScoped Bean中使用AJAX焊接@RequestParam

@ManagedBean @ViewScoped 
public class MyBean implements Serializable 
{ 
    @javax.inject.Inject 
    @org.jboss.solder.servlet.http.RequestParam("id") 
    private long id; 

    @PostConstruct 
    public void init() {...} 

    ... 
} 

ID與像test.jsf?id=1357調用正確的注射,但現在我想添加一些p:ajax東西在我的XHTML頁面。如果我刪除了@Inject @RequestParam(並在init()硬編碼的id)這工作正常,但如果我想使用此注射沒有任何反應和螢火蟲給了我這樣的響應:

<partial-response><error> 
    <error-name>class java.lang.IllegalStateException</error-name> 
    <error-message><![CDATA[Can not set long field MyBean.id to null value]]></error-message> 
</error></partial-response> 

更改類型 private Long id結果
<partial-response><error> 
    <error-name>class java.lang.IllegalStateException</error-name> 
    <error-message><![CDATA[]]></error-message> 
</error></partial-response> 

如何在@ViewScoped Bean中使用@RequestParam

+0

我不知道縫焊接是什麼,它應該做的,但你可以用標準的JSF2''標籤實現相同的基本功能要求。 – BalusC 2012-02-06 16:06:12

+0

謝謝你的解決方法,目前我已經刪除了@Inject @ RequestParam並使用了''。 – Thor 2012-02-08 07:30:58

回答

0

id必須封裝在javax.enterprise.inject.Instance;中,以與Seams RequestParam一起使用。

@javax.inject.Inject 
@org.jboss.solder.servlet.http.RequestParam("id") 
private Instance<Long> id; 

(在我從@ManagedBean @ViewScoped切換到@Named @ViewScoped,但我認爲這是不相關的這個問題,同時)

相關問題