use*_*674 11 postconstruct jsf-2 managed-bean viewparams
我有一个product.xhtml和一个ProductBean.我使用/ product/{id}来访问产品,所以我在product.xhtml中有一个viewParam,其值为value = ProductBean.id.问题是在bean内部我使用带有PostConstruct注释的init函数来填充产品的细节.为此,我需要id来调用外部函数.我想虽然在viewParam设置bean的id之前调用了init,因此在init中我无法调用外部函数,因为id尚未设置.我做错了什么,如何解决这个问题?
UPDATE
我发现了什么问题.我认为viewParam方法适用于CDI bean,但ManagedProperty方法适用于JSF bean.
我现在还有另一个问题.我的CDI bean是RequestScoped,当渲染product.xhtml时,bean被创建,我猜想以后会被丢弃.有趣的是,我在该bean中有一个函数,当我调用时,我可以读取id(我认为这是因为连接到视图参数)而不是任何其他属性.任何想法如何解决这一问题?
Bal*_*usC 25
你需要一个<f:event type="preRenderView">代替.
<f:metadata>
<f:viewParam name="foo" value="#{bean.foo}" />
<f:event type="preRenderView" listener="#{bean.onload}" />
</f:metadata>
Run Code Online (Sandbox Code Playgroud)
同
public void onload() {
// ...
}
Run Code Online (Sandbox Code Playgroud)
请注意,这实际上是一个小黑客.即将推出的JSF 2.2将提供一个新的,更明智的标签,仅用于:<f:viewAction>.
<f:metadata>
<f:viewParam name="foo" value="#{bean.foo}" />
<f:viewAction action="#{bean.onload}" />
</f:metadata>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9034 次 |
| 最近记录: |