Java jsf viewParam始终为空

Java jsf viewParam始终为空,java,jsf,Java,Jsf,我试图使用JSFviewParam获取一个参数,在呈现视图之前说“paramName”,并让它检查它是否有效。我使用它作为令牌系统,以便用户重置密码。有一个具有相应内容、页脚和页眉模板的基础模板。我有一个userBean,它是一个会话bean,具有以下代码 private String paramName; // +getter+setter public void check() { System.out.print(paramName); } /** * @return th

我试图使用JSFviewParam获取一个参数,在呈现视图之前说“paramName”,并让它检查它是否有效。我使用它作为令牌系统,以便用户重置密码。有一个具有相应内容、页脚和页眉模板的基础模板。我有一个userBean,它是一个会话bean,具有以下代码

private String paramName; // +getter+setter

public void check() {

    System.out.print(paramName);

}
/**
 * @return the paramName
 */
public String getParamName() {
    return paramName;
}

/**
 * @param paramName the paramName to set
 */
public void setParamName(String paramName) {
    this.paramName = paramName;
}
base.xhtml模板

  <h:body>
            <div id="wrapper">
                <f:view>
                         <ui:insert name="metadata"/>
                    <!-- Header Begin -->
                    <ui:insert name="header">
                        <ui:include src="/WEB-INF/templates/header.xhtml" />
                    </ui:insert>

resetPassword.xhtml

    <h:body>
        <ui:composition template="/WEB-INF/templates/base.xhtml">

            <ui:define name="title">Recover your username</ui:define>
            <ui:define name="metadata">
                <f:metadata>
                    <f:viewParam id="paramName" name="paramName" value="#{userBean.paramName}" required="true" />
                    <f:event type="preRenderView" listener="#{userBean.check}" />
                </f:metadata>
            </ui:define>

            <!-- Defines main content (not including header, footer, or menu) -->
            <ui:define name="content">

            </ui:define>
        </ui:composition>
    </h:body>
</html>

恢复您的用户名

我在网上读过/做过研究,并学习了教程,为什么我的paramName总是空的?

我开始怀疑我使用的是会话bean还是我正在阅读的文章中的视图范围bean:你使用的是什么JSF版本?用
@ViewScoped
bean试试这个,告诉我们你的结果。JSF 2.1和更改为@viewScope仍然会导致空值