- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想做的是实现forgotPassword页面。例如,我采用了下面的示例,这不是真正的用户相关问题,我将用户名保留在 session 范围内。
index.xhtml
将是忘记密码页面,我将在其中输入用户名。输入用户名后,我将单击Welcome Me - Action
并在 chkMe()
,我会检查该用户并在他/她的电子邮件 ID 和welcome.xhtml 中发送新密码,我会说 Hi User ABC, we have sent new password at asdfasdf@dasf.com
.
我正在尝试用两种情况将数据从一个 bean 打印到另一个 bean。下面是我的代码。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html">
<h:head>
<title>JSF 2.0 Hello World</title>
</h:head>
<h:body>
<h3>JSF 2.0 Hello World Example - hello.xhtml</h3>
<h:form>
<h:inputText value="#{helloBean.name}"></h:inputText>
<h:commandButton value="Welcome Me - Plain" action="welcome"></h:commandButton>
<h:commandButton value="Welcome Me - Action" action="#{helloBean.chkMe()}"></h:commandButton>
</h:form>
</h:body>
</html>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html">
<h:head>
<title>JSF 2.0 Hello World</title>
</h:head>
<h:body bgcolor="white">
<h3>JSF 2.0 Hello World Example - welcome.xhtml</h3>
<h4>Welcome --#{helloBean.name}--</h4>
</h:body>
</html>
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import java.io.Serializable;
import javax.faces.bean.RequestScoped;
@ManagedBean
@RequestScoped
public class HelloBean implements Serializable {
private static final long serialVersionUID = 1L;
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String chkMe() {
return takeMeToAnotherPage("welcome");
}
public String takeMeToAnotherPage(String linkToGo) {
return linkToGo + "?faces-redirect=true";
}
}
当我输入文本 Checking
时在文本字段中并单击按钮,Welcome Me - Plain
,我看到文本为 Welcome --Checking--
welcome.xhtml 中的文本,但是当我单击 Welcome Me - Action
时,我没有看到任何文字(我看到的是 Welcome ----
)
我不知道为什么会发生这种情况。
任何想法/建议为什么会发生这种情况。
<小时/>我相信这都是因为 ?faces-redirect=true
造成的,但我必须像不使用 ?faces-redirect=true
一样使用它,地址栏中的URL是以前的URL。
例如如果我在 page1.xhtml 上,然后转到 page2.xhtml,URL 仍然会显示 page1.xhtml。
所以不知道在这种情况下该怎么办。
<小时/>好吧,我真正想做的是忘记密码页面,我将在index.xhtml中输入用户名(考虑上面的示例),如果该用户名正确,在welcome.xhtml上,我将有 Hi User ABC, Please use new password for next login. We have sent you email at blah@blah.com
.
RequestScope 工作正常,但问题出在 URL 地址上,因此我添加了 ?faces-redirect=true
。但随着它的重定向,http session 正在关闭,因此在welcome.xhtml 上,我没有得到任何值(这就是上面发生的情况)。
来自skuntsel
的另一个解决方案是使用FlashScope ,但问题又是当我刷新welcome.xhtml时,数据消失了,这让我发疯。
有人可以建议需要做什么吗?
<小时/>假设我打开两个选项卡,并且在两个选项卡上都有index.xhtml。在 tab1 上我输入 Fahim
并点击Welcome Me - Action
。在 tab1 上,welcome.xhtml 出现,我看到文本为 Welcome Fahim
。 这太完美了。
现在我来到tab2,输入名称为XYZ
,然后单击Welcome Me - Action
我收到welcome.xhtml,看到文本为 Welcome XYZ
。 这也是完美的。
问题是当我返回 tab1 并刷新页面时。当我刷新 tab1 (welcome.xhtml) 时,我看到 Welcome XYZ
这是错误的,因为之前是 Welcome Fahim
它应该是 Welcome Fahim
.
最佳答案
根据我的口味,在 session 范围内使用当前用户是一个好主意。
不过,如果它不适合您,我可以提供更多替代方案。
翻译过来就是
<h:form>
<h:inputText value="#{helloBean.name}"/>
<h:commandButton value="Welcome Me - Action" action="#{helloBean.chkMe}"/>
</h:form>
和
public String chkMe() {
return takeMeToAnotherPage("welcome");
}
public String takeMeToAnotherPage(String linkToGo) {
return linkToGo + "?faces-redirect=true&username=" + name;
}
以及 welcome.xhtml
中的附加 View 参数
<f:metadata>
<f:viewParam name="username"/>
</f:metadata>
<h:form>
<h:inputText value="#{helloBean.name}"/>
<h:commandButton value="Welcome Me - Plain" action="welcome">
<f:setPropertyActionListener value="#{helloBean.name}" target="#{welcomePageBean.username}"/>
</h:commandButton>
</h:form>
与
@ManagedBean
@RequestScoped
WelcomePageBean {
private String username;//+getter + setter
//other fields associated with the welcome view
}
详细信息条目 View (片段),base.xhtml
:
<h:form>
<h:outputText value="Enter user name for password reset: " />
<h:inputText value="#{flash.username}" />
<br/>
<h:commandButton value="Send me a confirmation email" action="#{forgotBean.changePassword}" />
<h:form>
base.xhtml
的 ForgotBean
:
@ManagedBean
@RequestScoped
public class ForgotBean {
public ForgotBean() { }
public String changePassword() {
//check user constraints and return failure outcome in case somthing is wrong
//generate new password and persist it to the database
//send a configmation e-mail
return "successful-reset?faces-redirect=true";
}
}
成功 View (片段),successful-reset.xhtml
:
<h:outputText value="Password was reset for user #{receptorBean.username}, e-mail configmation sent." />
<br/>
<h:link value="View homepage" outcome="home" />
successful-reset.xhtml
的
ReceptorBean
:
@ManagedBean
@RequestScoped
public class ReceptorBean {
@ManagedProperty("#{flash}")
private Flash flash;
private String username;
public ReceptorBean() { }
public String getUsername() {
if(username == null) {
String uname = (String)flash.get("username");
flash.keep("inputText");
username= uname;
}
return username;
}
public Flash getFlash() {
return flash;
}
public void setFlash(Flash flash) {
this.flash = flash;
}
}
关于java - 在另一个页面中打印 bean 数据 (RequestScope),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15037870/
我乞求使用primefaces,在remoteCommand的这段代码中,我看到#{requestScope.shouldRender},我很困惑 我见
这个问题在这里已经有了答案: Backing beans (@ManagedBean) or CDI Beans (@Named)? (5 个答案) 关闭 4 年前。 我注意到我可以通过使用来自 @
在 JSF2 中,如何将对象从一个请求范围的 bean 传递到另一个请求范围的 bean?我真的不想让它们成为 session 范围的。 也许我可以将一个 bean 注入(inject)另一个? 谢谢
假设我们有一个类: @RequestScoped public class FooService { private NonThreadSafeGenerator generator = n
我正在使用带分页功能的 PrimeFaces 和 Datatable。我有一个支持 bean 的请求范围,当我浏览数据表时,数据消失了(没有任何内容可显示)。我以为数据表只是 Ajax 检索整个数据列
我正在使用 guice-servlet (2.0) 在每个 HTTP 请求开始时注入(inject)一个数据库连接,但是我怎样才能知道请求何时结束以便关闭连接? web.xml Guice
我正在学习使用 JAX-RS 进行一些 Restful api 开发,但我的资源类存在问题。 我的理解是我的资源类应该是 RequestScoped,但是,当它是 RequestScoped 时,我对
在 JSTL 中,您可以在组件中设置变量,这些变量可用于同一请求中的所有其他组件。在 AEM 中使用 sightly 是否有等效的方法在组件之间传递数据? (我们正在研究的用例是我们希望一个组件知道何
我有一个带有 List 属性的 @RequestScoped bean。 import javax.faces.bean.ManagedBean; import javax.faces.bean.Re
编辑4 我想做的是实现forgotPassword页面。例如,我采用了下面的示例,这不是真正的用户相关问题,我将用户名保留在 session 范围内。 index.xhtml将是忘记密码页面,我将在其
我正在开发一个用 @RequestScope 注释的 Service 类,问题是有一个方法需要很长时间才能继续,我想知道是否可以在该部分的哪一部分创建新线程代码将被执行。 我尝试过使用 Managed
我正在尝试创建一个日志服务来存储两个变量,我将在 http 请求的生命周期中使用它们。问题是我无法更改字段。我尝试了 setter 、初始化方法,我可以在调试器中看到值的变化,但在退出方法后,字段为空
这是我在这个美丽的网站上的第一个问题。我用谷歌搜索了很多,但没有找到任何解决方案。 我是 JSF 的新手,正在通过 Kent Ka lok Tong 的“JSF 2 API 和 JBoss Seam”
我的目标是呈现一个具有创建、检索和更新功能的 jsf 页面。我决定为每个操作创建不同的 CDI bean 和不同的复合组件,然后将它们全部放在页面中。 到目前为止一切顺利,但我刚刚完成,我发现了一个非
如果我创建一个用 @RequestScoped 注释的 bean,我希望它会为每个新请求实例化一个新的代理实例。 另一方面,每个请求都与它自己的线程相关联。 我的问题是:如果新请求重用池中先前创建的线
我写了一个 ViewScoped Managed-Bean,每次我在我的网络浏览器中刷新页面时,Managed-Bean 似乎被重新创建,文章为空,它加载一个新的文章对象等等。对我来说,它看起来与 R
package com.atlanticpkg.view.beans; import com.atlanticpkg.controller.ejb.ContactsFacade; import com
我有一个 JSF 页面并有一个与其关联的 Managedbean。 我的 xhtml 页面如下所示:
我观察到下面描述的我的 requestScoped bean 在单个请求期间被创建了多次。每次重新实例化 bean 时,正如日志所说,就在不久之前,bean 被销毁了。 @ManagedBean(na
我的 JEE 6 应用程序正在使用 CDI 以及带有嵌入式 tomee (1.7.2) 的 Arquillian 对其进行测试。在具有多个测试方法的测试类中,同一个 Request Scoped Be
我是一名优秀的程序员,十分优秀!