【发布时间】:2011-09-30 02:37:40
【问题描述】:
这个问题已经在 MYFACES 2.1 实现中得到解决
我有一个像这样正确传递整数参数的链接:
<h:link outcome="/process/createProcess">
<f:param name="id" value="#{process.idprocess}" />
Edit
</h:link>
它正确地转到“createProcess.xhtml?id=21”,我在请求范围内有这段代码支持 Bean createProcess:
@ManagedProperty(value="#{param.id}")
private Integer idProcess;
private Process newProcess;
@PostConstruct
public void init()
{
log();
if (idProcess!=null)
newProcess = Dao.getProcessDAO().get(idProcess);
else
newProcess = new Process();
}
我注意到idProcess 始终为空。调试后我意识到 setIdProcess 方法被称为 AFTER @PostConstruct.
我知道注入是在构建 bean 之后完成的,所有 managedProperties 都在@PostConstruct 中可用。
我错过了什么?
【问题讨论】:
-
这不应该发生。也无法在 Mojarra 2.1.1 上重现这一点。你到底在使用什么 JSF impl/version?
-
@BalusC Tomcat 7.0 上的 Apache MyFaces 2.0。我已经阅读了您博客中的文章以及您在此处的回答,您说注入的变量应该在@postconstruct 中可用,但不适用于我......
-
我不做 MyFaces。在未来的 MyFaces 问题中,请这样标记。我已经在这个问题上添加了它。我只能建议尝试 Mojarra。即使只是为了测试排除一个和另一个,以便您可以向 MyFaces 人员写一份适当的问题报告。
-
我将项目更新为 MyFaces 2.1,现在它首先注入变量,然后调用 @PostConstruct。最后,这是一个已经在最新版本(6 月 11 日)中修复的错误。 @BalusC 感谢您的建议,我会考虑的。
标签: jsf-2 annotations myfaces managed-bean