【发布时间】:2012-02-06 14:10:52
【问题描述】:
我有一个 @ViewScoped @ManagedBean 和一个 @RequestParam 来初始化我的 @PostConstruct 方法中的一些东西。
@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 之类的调用,但现在我想在我的 xhtml 页面中添加一些 p:ajax 内容。如果我删除@Inject @RequestParam(并在init() 中有硬编码的id),这工作正常,但如果我想使用这种注入,什么都不会发生,Firebug 会给我这个响应:
<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?
【问题讨论】:
-
我不知道 Seam Solder 是什么以及它应该做什么,但您可以使用标准 JSF2
<f:viewParam>标签实现相同的底层功能需求。 -
感谢您的解决方法,目前我已删除
@Inject @RequestParam并使用<f:viewParam>。
标签: java ajax jsf-2 deltaspike