这是我的问题,有人可以帮我....!
目前,我正在将应用程序从 struts 迁移到 JSF2。我们有一个用户验证链接,在他们成功注册后发送到他们的电子邮件进行验证。例如:
http://testserv:5050/bjb/page/validateAccount.faces?Email=qwerty@testsession#1.com&Code=1272
电子邮件地址在发送给用户的旧链接中包含特殊字符。在新应用程序中,我们使用 URLEncoder.encode 对它们进行编码。我认为,这与 UTF-8 无关,但是我将请求、响应和 JSF ExternalContext#setResponseCharacterEncoding 设置为 UTF-8。tomcat 也配置为 UTF-8。
验证帐户.xhtml
<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets">
<h:head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
</h:head>
<h:body>
<h:form acceptcharset="UTF-8" name="verifyUserAccountForm" id="verifyUserAccountForm" prependId="false">
<f:metadata>
<f:event type="preRenderView" listener="#{verifyUserBean.execute}"></f:event>
</f:metadata>
</h:form>
</h:body>
</html>
在java代码中,FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get(paramName); 无法正确读取 URL GET 请求参数。
我应该如何为现有链接解决这个问题。我的想法是,我可以在我的 xhtml 页面中编写一个 javascript 函数,它可以在加载时执行,因此使用 javascript 函数我可以对参数进行编码。但是如何在<f:event type="preRenderView">
调用之前执行该javascript函数。
有没有更好的解决方案?