我正在尝试使用 jsf viewParam 在视图渲染之前获取参数“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>
重置密码.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 始终为空?