我正在从JSF应用程序发送电子邮件。我需要它,以便在发送电子邮件时显示FacesMessage确认操作,然后浏览器重新加载到同一页面。我拥有的代码显示了面孔,但没有重新加载同一页面。
public String sendEmail(){
//Email Sending Code.....
Transport.send(message);
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO,
"Successfull\n", "You have successfully sent an e-mail to : " + e_mail + ". \n Thank You"));
return "Email?redirect-true";
}
这是我尝试过的内容,此代码重新加载了页面,但未显示FacesMessage。
public String sendEmail(){
//Email Sending Code.....
Transport.send(message);
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO,
"Successfull\n", "You have successfully sent an e-mail to : " + e_mail + ". \n Thank You"));
FacesContext context = FacesContext.getCurrentInstance();
HttpServletRequest origRequest = (HttpServletRequest) context.getExternalContext().getRequest();
String contextPath = origRequest.getContextPath();
FacesContext.getCurrentInstance().getExternalContext().redirect(contextPath + "/faces/Email.xhtml");
return "Email?redirect-true";
}
这是我发送电子邮件页面的代码:
<h:form >
<p:growl id="growl" showDetail="true"/>
<p:panel header="Send Email" style=" width: 70%">
<h:panelGrid columns="2">
<h:outputLabel value="E Mail Address: " />
<h:inputText value="#{mailing.e_mail}" style="width: 400px"/>
<h:outputText value="Subject: " />
<h:inputText value="#{mailing.subject}" style="width: 400px"/>
<h:outputText value="Message: " />
<h:inputTextarea value="#{mailing.mess}" style="height: 300px;width: 700px"/>
<h:panelGroup/>
<p:commandButton
value="Send Mail "
action="#{mailing.sendEmail()}"
ajax="false"/>
</h:panelGrid>
</p:panel>
</h:form>
请帮忙
如果要在整个重定向中保留,则应在对象上设置keepMessages
为true
。该范围是JSF2推出了新的范围。范围(以及随附的隐式EL对象)旨在用于短期存储“东西”(意味着您想要保留的任何东西,在短时间内)。Flash
FacesMessages
Flash
flash
重定向之前,请尝试以下行:
FacesContext.getCurrentInstance().getExternalContext().getFlash().setKeepMessages(true);
上面的行设置了必要的标志,以确保保留您的消息。
进一步阅读:
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句