2012-02-06 3 views
0

@PostConstruct 메서드에서 일부 내용을 초기화하려면 @ViewScoped@ManagedBean@RequestParam이 있어야합니다.SEAM Solder @RequestParam with @ViewScoped Bean with AJAX

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

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

    ... 
} 

IDtest.jsf?id=1357 같은 통화 제대로 주입,하지만 지금은 내 XHTML 페이지에 일부 p:ajax 물건을 추가 할. 이것은 내가 @Inject @RequestParam를 제거 (및 init()의 하드 id이) 경우 잘 작동하지만 나는이 주입 아무것도 사용하지하려는 경우 발생 및 방화범이 나에게이 응답을 제공합니다

private Long 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> 

@ViewScoped 콩에는 @RequestParam을 어떻게 사용할 수 있습니까?

+0

,하지만 당신이 할 수있는 (내가 @Named @ViewScoped@ManagedBean @ViewScoped로 전환,하지만 문제는이 질문에 관련이 없습니다 생각하는 한편) 표준 JSF2''태그로 동일한 기본 기능 요구 사항을 달성하십시오. – BalusC

+0

이 해결 방법을 이용해 주셔서 감사합니다. 현재'@Inject @ RequestParam'을 제거하고 ''을 사용하고 있습니다. – Thor

답변

0

idRequestParam과 함께 사용하려면 javax.enterprise.inject.Instance;에 캡슐화해야합니다.

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

내가 그것을 어떻게해야 무엇을 심 솔더이고 무슨 생각이 없다