0

我正在尝试在 JSF 2.0 中发送电子邮件确认链接。正确的链接发送到用户的电子邮件没有任何问题,但是当用户单击它时,我很难将链接重定向到正确的页面。我正在尝试使用漂亮的面孔进行 URL 映射。

确认链接如下所示:

/confirm?param=1xfib3e

我的代码很漂亮:

<url-mapping id="confirm">
    <pattern value="/confirm?param=#{ iid : emailConfirmation.param}" />
    <action>#{emailConfirmation.confirmationLink}</action>
</url-mapping>

我也尝试过更改{ iid : emailConfirmation.param}{emailConfirmation.param}{ param : emailConfirmation.param}

我试过了

<url-mapping id="confirm">
    <pattern value="/confirm" />
    <query-param name="param">#{emailConfirmation.param}</query-param>
    <action>#{emailConfirmation.confirmationLink}</action>
</url-mapping>

我还有一个 RequestScoped bean,它看起来像:

    @Named("emailConfirmation")
    @RequestScoped
    public class EmailConfirmation implements Serializable{

        private String param;
        ....
        public String confirmationLink() {
              log("param value: " + param);
        }

        public String getParam() {
           return param;
        }

        public void setParam(String param) {
           this.param = param;
       }

}

每当用户现在单击链接时,参数值为空。这是如何引起的,我该如何解决?

4

2 回答 2

1

找到了答案。如果有人好奇,那是因为我已经进口了

javax.faces.bean

代替

javax.enterprise.context.RequestScoped ....

此外,它是第二个有效的 url 映射代码块,而不是第一个!

于 2015-01-15T19:32:58.957 回答
0

您不能<pattern>在映射部分中使用查询参数。如果要为映射配置查询参数,请使用以下内容:

<url-mapping id="confirm">
  <pattern value="/confirm" />
  <query-param name="param">#{emailConfirmation.param}</query-param>
  <action>#{emailConfirmation.confirmationLink}</action>
</url-mapping>

看:

http://www.ocpsoft.org/docs/prettyfaces/3.3.3/en-US/html/Configuration.html#config.queryparams

于 2015-01-16T12:27:17.847 回答