【问题标题】:f:viewParam not working in dependent or view only in request scopef:viewParam 不能独立工作或仅在请求范围内查看
【发布时间】:2023-04-03 22:33:01
【问题描述】:

我想知道我是否有相同的发现,但是在创建从 jboss maven 原型生成的 javaee6 Web 项目后,我得到了以下结果。

f:viewParam,仅在请求范围内不适用于依赖或视图范围。

public class BaseBean {
    protected boolean edit;

    public boolean isEdit() {
        System.out.println("get edit=" + edit);
        return edit;
    }

    public void setEdit(boolean edit) {
        System.out.println("set edit=" + edit);
        this.edit = edit;
    }
}

@Named
@RequestScoped
public class RequestBean extends BaseBean { }

@Named
public class DependentBean extends BaseBean { }

@Named
@ViewScoped
public class ViewBean extends BaseBean { }

<ui:composition xmlns="http://www.w3.org/1999/xhtml"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:h="http://java.sun.com/jsf/html"
    template="/WEB-INF/templates/default.xhtml">

    <ui:define name="metadata">
        <f:metadata>
            <f:viewParam name="edit" value="#{dependentBean.edit}" />
        </f:metadata>
    </ui:define>


    <ui:define name="content">
        <h:outputText value="#{dependentBean.edit}"></h:outputText>
    </ui:define>
</ui:composition>

对于请求和视图范围视图,除了使用了manage bean之外,几乎与上面的相同。

有什么想法吗?

【问题讨论】:

    标签: jsf jsf-2 scope cdi


    【解决方案1】:

    问题是您将包 javax.faces.bean 中的 JSF 注释与包 javax.enterprise.context 中的 CDI 注释(注意使用 @Named)混合在一起,它们不能完全用于由不同的管理器处理(JSF 和 CDI 经理)。在您的应用程序中,您的托管 bean 应该来自 JSF 或 CDI,而不是两者的混合。

    请注意,CDI 尚不支持@ViewScoped,此范围仅适用于 JSF。更多信息:CDI missing @ViewScoped and @FlashScoped

    【讨论】:

    • 我对这个问题有预感,但找不到明确的文档。所以还是同样的问题,我们如何在dependentScope中实现f:viewParam?为什么它只适用于 requestScope?
    • @czetsuya 问题是 @ViewScoped 来自 JSF 并且不与 CDI @Named 注释混合,从而给你错误。如果您将 @Named 更改为 @ManagedBean 并将其他 CDI 更改为正确的 JSF 注释,它将按预期工作。
    • 是的,我已经更新了那部分,但 f:viewParam 仍然只适用于 requestScope 而不是dependentScope。
    猜你喜欢
    • 2012-11-13
    • 2021-06-25
    • 1970-01-01
    • 2013-11-27
    • 2022-01-11
    • 1970-01-01
    • 2019-01-26
    • 2015-07-14
    • 1970-01-01
    相关资源
    最近更新 更多