0

我想要一个验证器来重置我的密码。它将查看 URL 并从中解析出 token_id。我已经完成了其余的逻辑。我需要从我的 jsf 视图在页面加载时调用此验证器。但是我找不到使用 preRender 函数调用验证器的方法。下面的代码是调用 userBean 并检查令牌。我将如何更改它以调用验证器而不是托管 bean 属性?

<f:metadata>
    <f:event listener="#{userBean.check()}" type="preRenderView"/>
</f:metadata>

重置密码.xhtml

<h:body>
    <!-- Preload to assure the token is correct -->
    <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 name="tok_id" value="#{userBean.token}" validator="resetValidator" />
            </f:metadata>
        </ui:define>

        <ui:define name="content">
           You should receive a email shortly with your new password in it.
        </ui:define>
    </ui:composition>
</h:body>

有没有可能与我使用模板有关?

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>
           <!-- Header End -->
        <div id="mainBox">
           <div id="main">
                <!-- Content Begin -->
            <ui:insert name="content" >
               <ui:include src="/WEB-INF/templates/content.xhtml" />
            </ui:insert>
            <!-- Content End -->
            </div>
         </div>
                 <div style="clear: both"></div>
        <!-- Footer Begin -->
        <ui:insert name="footer">
            <ui:include src="/WEB-INF/templates/footer.xhtml" />
        </ui:insert>
        <!-- Footer End -->
    </f:view>
       </div>
       <h:outputScript library="js" name="base.js" />
 </h:body>

内容.xhtml

<h:body>
    <ui:composition></ui:composition>
</h:body>
4

1 回答 1

0

使用<f:viewParam>而不是手动抓取请求参数。

<f:viewParam name="token_id" value="#{bean.tokenId}" validator="yourTokenIdValidator" />

也可以看看:

于 2013-08-07T12:30:40.193 回答